在gtest中禁用整个测试用例

时间:2017-03-21 17:23:14

标签: c++ googletest

如何在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过滤器确实是唯一的解决方案,我应该在哪里编写一个禁用测试用例的过滤器?

3 个答案:

答案 0 :(得分:1)

使用--gtest_filter=-Class1Test.*运行测试应跳过Class1Test测试用例中的所有测试。这似乎并不复杂。

答案 1 :(得分:1)

  1. 您可以在主函数中写下这个:

    testing::GTEST_FLAG(filter) = "-Class1Test.*";
    

    RUN_ALL_TESTS();
    
  2. 如果您在Microsoft Visual Studio中进行了测试,则可以执行以下操作: 打开TestProject的属性并设置行

    - gtest_filter = -Class1Test *

  3. <配置属性/调试/命令参数

    中的

    1. 您可以使用此

      注释您的代码

      /* your tests */

    2. 或者

          #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){...}