按类别对googletest单元测试进行分组

wal*_*rii 8 c++ unit-testing googletest

googletest单元测试可以按类别分组吗?例如"SlowRunning","BugRegression"等.我发现最接近的是--gtest_filter选项.通过在测试或夹具名称后附加/预先添加类别名称,我可以模拟组的存在.这不允许我创建通常不运行的组.

如果googletest中不存在类别,是否有良好或最佳实践解决方法?

编辑:另一种方法是使用--gtest_also_run_disabled_tests.在测试前添加DISABLED_会给你一个条件类别,但是当我这样做时,我觉得我误用了DISABLED.

Tor*_*ten 6

其中一种方法是使用gtest_filter选项并使用命名约定进行测试(正如您所描述的那样).

TEST_F(Foo, SlowRunning_test1) {...}
TEST_F(Foo, BugRegression_test1) {...}
TEST_F(Foo, SlowRunningBugRegression_test1) {...}
Run Code Online (Sandbox Code Playgroud)

其他方式对任何类型的测试使用单独的二进制文件/可执行文件 这种方式有一些限制因为gtest使用静态自动注册,所以如果你包含一些源文件 - 在这个源文件中实现的所有测试都将包含在生成的二进制/可执行文件中.

我认为第一种方法更好.另外,我会实现新的测试注册宏,让我的生活更轻松:

#define GROUP_TEST_F(GroupName, TestBase, TestName) \
#ifdef NO_GROUP_TESTS \
   TEST_F(TestBase, TestName) \
#else \
   TEST_F(TestBase, GroupName##_##TestName) \
#endif
Run Code Online (Sandbox Code Playgroud)

  • 请注意,[测试名称不应包含下划线](https://github.com/google/googletest/blob/master/googletest/docs/primer.md#simple-tests) (2认同)