1

我花了一整天的时间试图让 GoogleTest 在 Visual Studio 2013 中工作。最后,让它“工作”,但它只有在函数的定义放在 .h 文件中时才有效。使用单独编译,如=:

// simplemath.h
#include <cmath>
double cubic(double d);

// simple.cpp
#include "simplemath.h"
double cubic(double d)
{
    return pow(d, 3);
}

// unittest_SimpleMath.cpp
#include "gtest/gtest.h"
#include "simplemath.h"    
TEST(testMath, myCubeTest)
{
    EXPECT_EQ(1000, cubic(10));
}  

产生以下错误:

1>------ Build started: Project: unittest_SimpleMath, Configuration: Release Win32 ------
1>  unittest_SimpleMath.cpp
1>unittest_SimpleMath.obj : error LNK2001: unresolved external symbol "double __cdecl cubic(double)" (?cubic@@YANN@Z)
1>C:\Users\alex\Documents\Visual Studio 2013\Projects\SimpleMath\Release\unittest_SimpleMath.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 2 up-to-date, 0 skipped ==========

编辑:忘了提到一件重要的事情。我按照教程http://www.bogotobogo.com/cplusplus/google_unit_test_gtest.php弄清楚如何配对 Gtest 和 VS2013。我的解决方案结构与 desc 相同。在教程中 - 3 个项目。

4

1 回答 1

1

看来您正在使用不同的项目进行测试。cubic您应该在具有您的功能的同一个项目中使用测试。或者从您的代码中制作 libcubic并将其链接到测试项目中。您遇到的错误与 gtest 没有任何关系。您只是没有将您的 cpp 文件编译为可以在测试项目中使用的目标文件。

另外,请确保您gtest_main*.lib在测试项目中链接了(星号,因为它有几个名称,您应该选择所需的任何内容),因为您没有main它(或者您没有显示它)。

于 2013-11-05T09:43:25.670 回答