如何在gtest中禁用完整的测试用例? (测试用例中的所有测试,而不仅仅是单个测试)
gtest doc中提出的格式是以下列方式组织测试:
class1test.cpp:
Test(Class1Test, TestA)
{
...
}
Test(Class1Test, TestB)
{
...
}
...
class2test.cpp:
Test(Class2Test, TestA)
{
...
}
Test(Class2Test, TestB)
{
...
}
....
class3test.cpp
依旧......
我知道在测试中添加前缀DISABLED_
会阻止它运行(例如:Test(Class1Test, DISABLED_TestB)
)
但是如果我想禁用测试用例Class1Test中的所有测试呢?
这篇文章GoogleTest: How to skip a test?建议使用gtest过滤器,但对于我想做的事情来说,这似乎是一个复杂的解决方案。 gtest过滤器确实是唯一的解决方案,我应该在哪里编写一个禁用测试用例的过滤器?
答案 0 :(得分:1)
使用--gtest_filter=-Class1Test.*
运行测试应跳过Class1Test
测试用例中的所有测试。这似乎并不复杂。
答案 1 :(得分:1)
您可以在主函数中写下这个:
testing::GTEST_FLAG(filter) = "-Class1Test.*";
前
RUN_ALL_TESTS();
如果您在Microsoft Visual Studio中进行了测试,则可以执行以下操作: 打开TestProject的属性并设置行
- gtest_filter = -Class1Test *
中的
您可以使用此
注释您的代码 /*
your tests
*/
或者
#ifdef _0
your tests
#endif
答案 2 :(得分:0)
Gtest文档完全回答了这个问题-请参见下面的图 (摘自:https://github.com/google/googletest/blob/master/googletest/docs/advanced.md)
暂时禁用测试 如果您有无法立即修复的损坏测试,则可以在其名称中添加DISABLED_前缀。这会将其从执行中排除。这比注释掉代码或使用#if 0更好,因为禁用的测试仍在编译中(因此不会腐烂)。
如果需要禁用测试套件中的所有测试,则可以将DISABLED_添加到每个测试名称的前面,或者将其添加到测试套件名称的前面。
例如,即使仍将编译以下测试,googletest也不会运行它们:
//测试Foo是否执行Abc。 TEST(FooTest,DISABLED_DoesAbc){...}
DISABLED_BarTest类:public :: testing :: Test {...};
//测试Bar是否执行Xyz。 TEST_F(DISABLED_BarTest,DidXyz){...}