假设我有一个接口 iface 及其几个实现 AB . 现在,类 AB 的对象是通过读取某些文件来构造的 f1,f2,...,fm. 也就是说,有 m 个对象,如果考虑2个实现类 AB ,则总共有 2m 个对象 . 现在,https://github.com/abseil/googletest/blob/master/googletest/docs/advanced.md#how-to-write-value-parameterized-tests是一个很好的起点,可以自动执行将文件名 f1,...,fm 提供给构造函数的步骤 . 然后只需使用 INSTANTIATE_TEST_CASE_P(MyGroup, BarTest, testing::Values(<some-way-of-getting-filenames>)) . 另一方面,有一个Typed-Test概念:on能够提供不同的接口实现,就像这样

typedef Types<A,B> impls;
INSTANTIATE_TYPED_TEST_CASE_P(MyName,    // Instance name
                              FooTest,             // Test case name
                              impls);  // Type list

这里, FooTest 被定义为

template<class T>
class FooTest : public ::testing::Test {
//...
}

再次根据https://github.com/abseil/googletest/blob/master/googletest/samples/sample6_unittest.cc的文档/样本,而 BarTest 定义为

class BarTest : public ::testing::Test, public ::testing::TestWithParam<const char*>

现在我可以看到我需要的是 INSTANTIATE_TEST_CASE_PINSTANTIATE_TYPED_TEST_CASE_P 的组合,来自 testing::Test, TestWithParam 的类 FooBarTest ,还有一个模板参数 T . 问题是,这可能吗?有这样的宏吗?