我想用gtest测试模板类。我在Google Test manual中阅读了关于TYPED_TESTs并查看了它们引用的official example,但仍无法绕过我的测试中实例化模板类的对象。
假设以下简单模板类:
template <typename T>
class Foo
{
public:
T data ;
};
在测试课中我们声明
typedef ::testing::Types<int, float> MyTypes ;
现在,如何在测试中为MyTypes中列出的Ts实例化一个类Foo的对象? E.g。
TYPED_TEST(TestFoo, test1)
{
Foo<T> object ;
object.data = 1.0 ;
ASSERT_FLOAT_EQ(object.data, 1.0) ;
}
答案 0 :(得分:7)
在测试中,请参阅特殊名称TypeParam
以获取type参数。所以你可以做到
TYPED_TEST(TestFoo, test1)
{
Foo<TypeParam> object ; // not Foo<T>
object.data = 1.0 ;
ASSERT_FLOAT_EQ(object.data, 1.0) ;
}