gpt4 book ai didi

c++ - 模板类型化方法 GTesting

转载 作者:搜寻专家 更新时间:2023-10-31 02:19:04 26 4
gpt4 key购买 nike

这是我的:

/* Can't change 'base' struct. */
struct base {
public:
template<typename T>
void printVal() {
std::cout << T::x << std::endl;
}
};

struct testFixture
: public base
, public ::testing::Test {
using base::printVal;
};

TEST_F(testFixture, testF) {
printVal<A>();
printVal<B>();
printVal<C>();
}

效果很好。但是,我想使用类型化测试,这样代码看起来更像这样:

/* Same base class as above. */
struct testFixture
: public base
, public ::testing::Test {
using base::printVal;
};

typedef ::testing::Types<A, B, C> MyTypes;
TYPED_TEST_CASE(testFixture, MyTypes);

TYPED_TEST(testFixture, typedTest) {
printVal<TypeParam>();
}

当然,因为“testFixture”不是模板化的结构/类,这将不起作用,我得到这个错误:

test2.cpp:31:12: error: unknown template name 'testFixture'
TYPED_TEST(testFixture, typedTest) {

有没有一种方法可以使用 googletest 获得此类功能?

最佳答案

想通了。

“模板化”夹具:

template <typename T>
struct testFixture
: public base
, public ::testing::Test {
using base::printVal;
void printVal() {
base::printVal<T>();
}
};

然后照常进行:

typedef ::testing::Types<A, B, C> MyTypes;
TYPED_TEST_CASE(testFixture, MyTypes);

TYPED_TEST(testFixture, typedTest) {
this->template printVal<TypeParam>();
}

关于c++ - 模板类型化方法 GTesting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33926369/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com