#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 件のコメント:
コメントを投稿