如何在Visual Studio中正确链接文件以运行本机测试



我正试图为我的类编写单元测试,但我得到了"未解析的外部符号"没有语法错误,我试着在微软官方网站上查找原因,但不幸的是,它可能是由一百万种不同的原因引起的。关于我能做些什么或者是什么原因导致的,有什么建议吗?这是我的代码:

// 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的链接。

  1. 添加对UnitTest的引用。

  2. 链接到对象或库文件:Properties->Linker->Input->Additional Dependencies->input ..ProjectNameDebug*.obj

  3. 为头文件添加#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;
}