在 gtest 中禁用整个测试用例
Disable whole test case in gtest
如何在 gtest 中禁用一个完整的测试用例? (一个测试用例中的所有测试,而不仅仅是单个测试)
gtest 文档中建议的格式是按以下方式组织测试:
class1test.cpp:
Test(Class1Test, TestA)
{
...
}
Test(Class1Test, TestB)
{
...
}
...
class2test.cpp:
Test(Class2Test, TestA)
{
...
}
Test(Class2Test, TestB)
{
...
}
....
class3test.cpp
等等...
我知道在测试中添加前缀 DISABLED_
会阻止它 运行(例如:Test(Class1Test, DISABLED_TestB)
)
但是如果我想禁用测试用例Class1Test中的所有测试怎么办?
这个 post GoogleTest: How to skip a test? 建议使用 gtest 过滤器,但这对于我想做的事情来说似乎是一个复杂的解决方案。
它 gtest 过滤器确实是唯一的解决方案,我应该在哪里编写禁用测试用例的过滤器?
运行 测试 --gtest_filter=-Class1Test.*
应该跳过 Class1Test
测试用例中的所有测试。这看起来并不复杂。
可以在main函数中这样写:
testing::GTEST_FLAG(filter) = "-Class1Test.*";
之前
RUN_ALL_TESTS();
如果您在 Microsoft Visual Studio 中进行测试,您可以这样做:
打开 TestProject 的属性并设置行
--gtest_filter=-Class1Test.*
在配置属性/调试/命令参数中
您可以使用此评论您的代码
/*
your tests
*/
或这个
#ifdef _0
your tests
#endif
Gtest 文档准确回答了这个问题 - 请参阅下面的摘录
(摘自:https://github.com/google/googletest/blob/master/googletest/docs/advanced.md)
暂时禁用测试
如果您有无法立即修复的损坏测试,您可以添加
DISABLED_
前缀。这会将其排除在执行之外。这是
比注释掉代码或使用 #if 0
更好,因为禁用的测试是
仍然编译(因此不会腐烂)。
如果您需要禁用测试套件中的所有测试,您可以添加 DISABLED_
到每个测试名称的前面,或者将它添加到前面
测试套件名称。
例如,以下测试不会被 googletest 运行,即使它们
仍将被编译:
// Tests that Foo does Abc.
TEST(FooTest, DISABLED_DoesAbc) { ... }
class DISABLED_BarTest : public testing::Test { ... };
// Tests that Bar does Xyz.
TEST_F(DISABLED_BarTest, DoesXyz) { ... }
如何在 gtest 中禁用一个完整的测试用例? (一个测试用例中的所有测试,而不仅仅是单个测试)
gtest 文档中建议的格式是按以下方式组织测试:
class1test.cpp:
Test(Class1Test, TestA)
{
...
}
Test(Class1Test, TestB)
{
...
}
...
class2test.cpp:
Test(Class2Test, TestA)
{
...
}
Test(Class2Test, TestB)
{
...
}
....
class3test.cpp
等等...
我知道在测试中添加前缀 DISABLED_
会阻止它 运行(例如:Test(Class1Test, DISABLED_TestB)
)
但是如果我想禁用测试用例Class1Test中的所有测试怎么办?
这个 post GoogleTest: How to skip a test? 建议使用 gtest 过滤器,但这对于我想做的事情来说似乎是一个复杂的解决方案。 它 gtest 过滤器确实是唯一的解决方案,我应该在哪里编写禁用测试用例的过滤器?
运行 测试 --gtest_filter=-Class1Test.*
应该跳过 Class1Test
测试用例中的所有测试。这看起来并不复杂。
可以在main函数中这样写:
testing::GTEST_FLAG(filter) = "-Class1Test.*";
之前
RUN_ALL_TESTS();
如果您在 Microsoft Visual Studio 中进行测试,您可以这样做: 打开 TestProject 的属性并设置行
--gtest_filter=-Class1Test.*
在配置属性/调试/命令参数中
您可以使用此评论您的代码
/* your tests */
或这个
#ifdef _0
your tests
#endif
Gtest 文档准确回答了这个问题 - 请参阅下面的摘录 (摘自:https://github.com/google/googletest/blob/master/googletest/docs/advanced.md)
暂时禁用测试
如果您有无法立即修复的损坏测试,您可以添加
DISABLED_
前缀。这会将其排除在执行之外。这是
比注释掉代码或使用 #if 0
更好,因为禁用的测试是
仍然编译(因此不会腐烂)。
如果您需要禁用测试套件中的所有测试,您可以添加 DISABLED_
到每个测试名称的前面,或者将它添加到前面
测试套件名称。
例如,以下测试不会被 googletest 运行,即使它们 仍将被编译:
// Tests that Foo does Abc.
TEST(FooTest, DISABLED_DoesAbc) { ... }
class DISABLED_BarTest : public testing::Test { ... };
// Tests that Bar does Xyz.
TEST_F(DISABLED_BarTest, DoesXyz) { ... }