googletest单元测试可按类别分组吗?例如“SlowRunning”,“BugRegression”等。我发现最接近的是--gtest_filter选项。通过在测试或夹具名称后附加/预先添加类别名称,我可以模拟组的存在。这不允许我创建通常不运行的组。
如果googletest中不存在类别,是否有良好或最佳实践解决方法?
编辑:另一种方法是使用--gtest_also_run_disabled_tests。在测试前添加DISABLED_会给你一个条件类别,但是当我这样做时,我觉得我在滥用DISABLED。
答案 0 :(得分:5)
使用gtest_filter选项之一并使用命名约定进行测试(正如您所描述的那样)。
TEST_F(Foo, SlowRunning_test1) {...}
TEST_F(Foo, BugRegression_test1) {...}
TEST_F(Foo, SlowRunningBugRegression_test1) {...}
其他方式对任何类型的测试使用单独的二进制文件/可执行文件。这种方式有一些限制,因为gtest使用静态自动注册,所以如果你包含一些源文件 - 在这个源文件中实现的所有测试都将包含在生成的二进制/可执行文件中。
我认为第一种方法更好。另外,我会实现新的测试注册宏,让我的生活更轻松:
#define GROUP_TEST_F(GroupName, TestBase, TestName) \
#ifdef NO_GROUP_TESTS \
TEST_F(TestBase, TestName) \
#else \
TEST_F(TestBase, GroupName##_##TestName) \
#endif
答案 1 :(得分:2)
在单个测试可执行文件中运行测试子集的唯一方法是--gtest_filter。执行说集成测试和单元测试有两种解决方法