使用头文件的静态方法c ++的GoogleTest

时间:2014-04-30 07:05:55

标签: c++ unit-testing static-methods googletest

所以我需要使用gTest。

我有一个带静态函数的util类。

头文件包含函数的declerations:

class a
{
public:
    a();
    virtual ~a();

    static bool test();
}

在cpp文件上实现:

a::a() { }
a::~a() { }
bool a::test() { return true; }

在测试单元文件上我刚刚添加了一个测试:

TEST(a, a)
{
  EXPECT_EQ(true,a::test());  
}

我收到了链接器错误:

Error   3   error LNK2001: unresolved external symbol "public: static bool __cdecl a::test()" (?test@a@@SA_NIPAD0@Z)    UnitTest.obj    UnitTest

如果静态函数的实现在.h文件中,一切都顺利进行。

无论如何以单向测试静态功能?

1 个答案:

答案 0 :(得分:1)

目前,您实现的test()没有返回类型。有时可能会将其解释为默认int。通过更改此内容添加类型:

a::test() { return true; }

进入这个:

bool a::test() { return true; }

然而编译器之前没有抱怨它似乎很奇怪。编译后的文件仍未正确链接。

首先尝试更改代码。