Puc*_*tek 9 c++ templates unit-testing googletest
我想用gtest测试模板类.我在Google测试手册中阅读了有关TYPED_TESTs的内容,并查看了他们引用的官方示例,但仍无法解决在我的测试中实例化模板类的对象.
假设以下简单模板类:
template <typename T>
class Foo
{
public:
T data ;
};
Run Code Online (Sandbox Code Playgroud)
在测试类我们声明
typedef ::testing::Types<int, float> MyTypes ;
Run Code Online (Sandbox Code Playgroud)
现在,如何在测试中为MyTypes中列出的Ts实例化类Foo的对象?例如
TYPED_TEST(TestFoo, test1)
{
Foo<T> object ;
object.data = 1.0 ;
ASSERT_FLOAT_EQ(object.data, 1.0) ;
}
Run Code Online (Sandbox Code Playgroud)
在测试中,请参阅特殊名称TypeParam以获取type参数.所以你可以做到
TYPED_TEST(TestFoo, test1)
{
Foo<TypeParam> object ; // not Foo<T>
object.data = 1.0 ;
ASSERT_FLOAT_EQ(object.data, 1.0) ;
}
Run Code Online (Sandbox Code Playgroud)