我正在尝试使用Google Test Framework + Visual Studio 2013进行首次单元测试,但是遇到以下错误并且无法理解原因。
1> ------开始构建:项目:FirstGoogleTest,配置:Win32调试------
2> ------开始构建:项目:googleTest,配置:Win32调试------
1> MyMultiplier.cpp
2> gtest_main.cc
1> main.cpp
1>正在生成代码...
2> gtest-all.cc
1> FirstGoogleTest.vcxproj-> D:_Vault \ Workspaces \ UnitTestLearning \ FirstGoogleTest \ Debug \ FirstGoogleTest。 exe
2>正在生成代码...
2> googleTest.vcxproj-> D:_Vault \ Workspaces \ UnitTestLearning \ FirstGoogleTest \ Debug \ googleTest.lib
3> ------构建已开始:项目:MyMultiplier_UnitLevelTest,配置:Debug Win32- -----
3> MyMultiplier_UnitLevelTest.cpp
3> MyMultiplier_UnitLevelTest.obj:错误LNK2019:未解决的外部符号“ public:unsigned int __thiscall
MyMultiplier :: multiply(unsigned int,unsigned int)”(?multiply @ MyMultiplier @@ QAEIII @ Z)在函数“ private:virtual void __thiscall中引用” MyMultiplier_multiplyNormalSmallValues_Test :: TestBody(无效)”(TestBody @ @@ MyMultiplier_multiplyNormalSmallValues_Test EAEXXZ?)
3> d:_Vault \工作区\ UnitTestLearning \ FirstGoogleTest \调试\ MyMultiplier_UnitLevelTest.exe:致命错误LNK1120:1周无法解析的外部
======== ==构建:2成功,1失败,0最新,已跳过0 ==========
解决方案的结构如下:https :
//www.dropbox.com/s/0cu8eqr7pz3ajaz/Untitled.png
ULT项目的“参考”项目包括“ googleTest”和“ FirstGoogleTest”。这是“ MyMultiplier_UnitLevelTest.cpp”
#include "gtest/gtest.h" // access test macro
#include "MyMultiplier.h" // testee
#include <iostream>
#include <string>
TEST(MyMultiplier, multiplyNormalSmallValues){
MyMultiplier m;
std::string name("MyMultiplier_ULT");
unsigned int a = 5;
unsigned int b = 10;
unsigned int answer = m.multiply(a, b/*, name*/);
ASSERT_EQ(a * b, answer);
}
MyMultiplier.h中“乘”函数的声明:
class MyMultiplier{
public:
unsigned int multiply(unsigned int a, unsigned int b/*, std::string& name*/);
};
签名匹配,并且还包含头文件。为什么ult项目找不到符号?
完整的解决方案可以在这里下载:https : //www.dropbox.com/sh/vc89o5ep139wkuk/AAA8Z76q6iAkP25zTmu9bR3ia
根本原因是项目类型设置不正确。
在此示例中,有三个项目:
根本原因是“ FirstGoogleTest”项目的配置类型设置为.exe,与ULT项目相同。因此ult测试无法从“ FirstGoogleTest”获取外部信息。将“ FirstGoogleTest”配置更改为静态库(.lib)之后。解决方案可以正确编译,并且ULT运行正常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句