我正试图为我的类编写单元测试,但我得到了"未解析的外部符号"没有语法错误,我试着在微软官方网站上查找原因,但不幸的是,它可能是由一百万种不同的原因引起的。关于我能做些什么或者是什么原因导致的,有什么建议吗?这是我的代码:
// Example.h file
#pragma once
#include <iostream>
using namespace std;
class Example {
public:
int addTwoNumbers(int first, int second);
};
// Example.cpp file
#include "Example.h"
#include <iostream>
using namespace std;
int Example::addTwoNumbers(int first, int second) {
return first + second;
}
// Test.cpp file
#include "pch.h"
#include "../Project/Example.h"
#include "CppUnitTest.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace Tests
{
TEST_CLASS(Tests)
{
public:
TEST_METHOD(UnitTest1)
{
Example e;
Assert::AreEqual(4, e.addTwoNumbers(2, 2)); // this line is causing issues
}
};
}
我得到的确切错误:
Severity Code Description Project File Line Suppression State
Error LNK2019 unresolved external symbol "public: int __thiscall Example::addTwoNumbers(int,int)" (?addTwoNumbers@Example@@QAEHHH@Z) referenced in function "public: void __thiscall Tests::Tests::UnitTest1(void)" (?UnitTest1@Tests@1@QAEXXZ) Tests C:UsersmesourcereposTestsTests.obj 1
您可以检查是否包括以下步骤。你可以参考这个关于Write unit tests for C/C++ in Visual Studio
的链接。
-
添加对
UnitTest
的引用。 -
链接到对象或库文件:
Properties->Linker->Input->Additional Dependencies->input ..ProjectNameDebug*.obj
-
为头文件添加#include指令:
#include "../Project1/Example.h"
如果lnk2019仍然出现,请尝试将以下代码添加到Example.cpp.
#include<iostream>
#include "Example.h"
using namespace std;
int Example::addTwoNumbers(int first, int second) {
return first + second;
}
int main()
{
return 0;
}