如何在单元测试框架 Google 测试中组合测试过滤器?
How can I combine test filters in the unit testing framework Google Test?
我有几个单元测试用例,是我用Google测试框架写的:
测试class:
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
}
Assumed that I want to display only SubTest1
and SubTest3
, what do I have to do? Important is, that I want to see at a central place (main method), which tests are actually executed.
我想,我可以 "stack" 过滤器,如下例所示,但这种方法不起作用:
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
。
我试图找到一些官方 googletest
参考,但我只找到 this article 解释 googletest 过滤器的语法。如果你想 运行 测试用例匹配 2 种不同模式之一,你的过滤器应该是这样的:
"FIRST_PATTERN:SECOND_PATTERN"
因此,在您的情况下:
::testing::GTEST_FLAG(filter) = "Test.SubTest1:Test.SubTest3";
您还可以使用通配符 ?
和 *
,并且可以在 -
符号后添加排除模式。
您可以禁用您不想 运行 带有 DISABLED_
前缀的测试 (see documentation):
TEST_F(Test, DISABLED_SubTest2)
{
// execute Test logic
}
测试仍会被编译,但 GoogleTest 不会 运行。
GoogleTest 在测试完成后提供了一个很好的信息,其中有多少被禁用。
您也可以使用 --gtest_also_run_disabled_tests
标志暂时启用它们。
我有几个单元测试用例,是我用Google测试框架写的:
测试class:
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 }
Assumed that I want to display only
SubTest1
andSubTest3
, what do I have to do? Important is, that I want to see at a central place (main method), which tests are actually executed.
我想,我可以 "stack" 过滤器,如下例所示,但这种方法不起作用:
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
。
我试图找到一些官方 googletest
参考,但我只找到 this article 解释 googletest 过滤器的语法。如果你想 运行 测试用例匹配 2 种不同模式之一,你的过滤器应该是这样的:
"FIRST_PATTERN:SECOND_PATTERN"
因此,在您的情况下:
::testing::GTEST_FLAG(filter) = "Test.SubTest1:Test.SubTest3";
您还可以使用通配符 ?
和 *
,并且可以在 -
符号后添加排除模式。
您可以禁用您不想 运行 带有 DISABLED_
前缀的测试 (see documentation):
TEST_F(Test, DISABLED_SubTest2)
{
// execute Test logic
}
测试仍会被编译,但 GoogleTest 不会 运行。
GoogleTest 在测试完成后提供了一个很好的信息,其中有多少被禁用。
您也可以使用 --gtest_also_run_disabled_tests
标志暂时启用它们。