我想用gtest测试一个模板类。我在Google Test manual中阅读了有关TYPED_TEST的信息,并查看了它们引用的official example,但是仍然无法解决在测试中实例化模板类对象的问题。
假设以下简单模板类:
template <typename T>
class Foo
{
public:
T data ;
};
在测试课中,我们声明
typedef ::testing::Types<int, float> MyTypes ;
现在,如何在测试中为MyTypes中列出的Ts实例化Foo类的对象?
例如。
TYPED_TEST(TestFoo, test1)
{
Foo<T> object ;
object.data = 1.0 ;
ASSERT_FLOAT_EQ(object.data, 1.0) ;
}
最佳答案
在测试内部,请引用特殊名称TypeParam
以获取类型参数。所以你可以做
TYPED_TEST(TestFoo, test1)
{
Foo<TypeParam> object ; // not Foo<T>
object.data = 1.0 ;
ASSERT_FLOAT_EQ(object.data, 1.0) ;
}
关于c++ - gtest-测试模板类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17079702/