#define DISABLED_MacroTest EnabledTest #define MacroTest DISABLED_Test TEST(DISABLED_MacroTest, Enable) { ASSERT_EQ(0, 0); } TEST(MacroTest, NotRun) { ASSERT_EQ(2, 3); }
さて、こちらのテストを実行するとどうなると思いますか?
EnabledTest が実行され、MacroTest が実行されていないのがわかると思います。
実は、TEST マクロに指定したトークンは展開されます。
試しに、--gtest_also_run_disabled_tests で実行するとこうなります。
MacroTest が DISABLED_Test として評価されているのがわかりますね。
同様に TEST_F でも展開されます。
class EnabledTestFixed : public testing::Test {}; typedef EnabledTestFixed DISABLED_TestFixed; #define MacroTestF DISABLED_TestFixed #define DISABLED_MacroTestF EnabledTestFixed TEST_F(MacroTestF, NotRun) { ASSERT_EQ(2, 3); } TEST_F(DISABLED_MacroTestF, Run) { ASSERT_EQ(0, 0); }
この動作を利用してこのような、使い方ができます。
#ifdef USER_ZUMIX # define MYTESTCASE_NAME MyTest #else # define MYTESTCASE_NAME DISABLED_MyTest #endif TEST(MYTESTCASE_NAME, Test1) { }
それじゃ、TEST_P も…と思いますが、
残念ながら、TEST_P や TYPED_TEST ではこの手法は使えません。
(iutestならできます!)
今回は、Google Test のちょっとしたテクニックを紹介しました。
それでは。
0 件のコメント:
コメントを投稿