我有几个用Google Test框架编写的单元测试用例:
测试类:
class Test: public testing::Test
{
public:
virtual void SetUp() {}
virtual void TearDown() {}
};
实际测试:
TEST_F(Test, SubTest1)
{
// execute Test logic
}
TEST_F(Test, SubTest2)
{
// execute Test logic
}
TEST_F(Test, SubTest3)
{
// execute Test logic
}
假设我只想显示
SubTest1
和SubTest3
,我该怎么办?重要的是,我想在一个中心位置(main方法)看到实际执行的测试。
我认为,可以像下面的示例一样“堆叠”过滤器,但是这种方法不起作用:
int main(int argc, char** argv)
{
::testing::InitGoogleMock(&argc, argv);
::testing::GTEST_FLAG(filter) = "Test.SubTest1";
::testing::GTEST_FLAG(filter) = "Test.SubTest3";
return RUN_ALL_TESTS();
}
→第二个过滤器删除了第一个过滤器,仅执行SubTest3
。
答案 0 :(得分:4)
我试图找到一些官方的googletest
参考,但是我只发现this article在解释googletest过滤器的语法。如果要运行与两种不同模式之一匹配的测试用例,则过滤器应如下所示:
"FIRST_PATTERN:SECOND_PATTERN"
所以,就您而言:
::testing::GTEST_FLAG(filter) = "Test.SubTest1:Test.SubTest3";
您还可以使用通配符?
和*
,并且可以在-
符号后添加排除模式。
答案 1 :(得分:3)
您可以禁用不想使用DISABLED_
前缀(see documentation)进行的测试:
TEST_F(Test, DISABLED_SubTest2)
{
// execute Test logic
}
测试仍将编译,但GoogleTest将不会运行它。
在完成测试后,GoogleTest提供了很好的信息,其中有多少被禁用了。
您还可以使用--gtest_also_run_disabled_tests
标志暂时启用它们。