创建不带通配符的 gtest 过滤器

问题描述

是否可以创建不含通配符的 GoogleTest 过滤器?

我有一个测试套件 TestSuiteA

TEST_P(TestSuiteA,Blabla) {
   // ...
}

INSTANTIATE_TEST_CASE_P(Apple,TestSuiteA,testing::Combine(...));

INSTANTIATE_TEST_CASE_P(Ananas,testing::Combine(...));

还有第二个测试套件 TestSuiteB

TEST_P(TestSuiteB,Kokoko) {
   // ...
}

INSTANTIATE_TEST_CASE_P(Apple,TestSuiteB,testing::Combine(...));

我确切地知道我想启动哪些测试,所以我不想使用通配符。

我的过滤器

Apple/TestSuiteA:Apple/TestSuiteB

但它不起作用 -> 0 个测试要启动

但是有了这个

Apple/TestSuiteA.*:Apple/TestSuiteB.*

有效

.* 是什么意思,为什么没有它就不能工作?

谢谢

解决方法

每个测试都需要有一个唯一的名称,而您没有提供准确的名称。这就是为什么没有运行测试的原因。确保您知道测试的确切名称 - 您可以使用 --gtest_list_tests 列出给定测试可执行文件中定义的所有测试用例。然后使用以 --gtest_filter 分隔的确切名称和 :。要了解有关如何运行多个测试的更多信息,请参阅 gtest advanced documentation