gtest - 测试模板类

时间:2013-06-13 05:17:49

标签: c++ unit-testing templates googletest

我想用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) ;
}

1 个答案:

答案 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) ;
}