ctestで特定のテストを除外する方法

作成日:

本ページではctestで特定のテストを除外する方法について解説します。

方法#

-exclude-regex あるいはその短縮形である -E を利用します。

ctest --exclude-regex <regex>
ctest -E <regex>

説明#

ctest-R オプションで実行対象ファイルを指定するのと同じように、 -E オプションを利用して特定のテストを実行対象から除外することができます。

ctest -E <regex>

正規表現であるため、単に文字列を指定すると各テストの名前から部分一致で除外を実施します。

実施例#

例えば以下を指定すると

ctest -E module

module という文字列を含むテストがすべて除外されます。

先頭や末尾を検索して除外するには ^$ などを併用する必要があります。

# テスト名先頭が module から始まるテストを除外
ctest -E "^module"
# テスト名末尾が module で終わるテストを除外
ctest -E "module$"

複数のパターンを除外するには、 | を利用します。

# module と mock をテスト名に含むテストを除外
ctest -E "module|mock"

また、きちんと除外できているかを確認するために実施前に -N を利用してテスト名一覧を確認すると安全です。

ctest -E "module" -N
ctest