我正在尝试在c ++中另一个单元测试项目(我们称为UnitTest1)的解决方案(我们称为Project1)中的一个项目中的类上执行一些基本的单元测试。我正在使用Visual Studio 2019的最新版本。
我在Visual Studio 2019中为c ++创建了一个全新的解决方案,并在另一个文件中添加了带有HelloWorld类的控制台应用程序,该文件只具有一种返回std :: string“ Hello World”的方法。
然后,我在解决方案中添加了一个新的“本机测试项目”,在引用下添加了Project1控制台应用程序,并键入了如下所示的代码:
project1文件:
#include <iostream>
#include "HelloWorld.h"
int main() {
HelloWorld* hello = new HelloWorld();
std::cout << hello->sayHello();
}
HelloWorld.h:
#pragma once
#include <string>
class HelloWorld {
public: HelloWorld();
public: std::string sayHello();
};
HelloWorld.cpp:
#include "HelloWorld.h"
#include <string>
HelloWorld::HelloWorld() {
}
std::string HelloWorld::sayHello() {
return std::string("Hello World");
}
UnitTest1.cpp:
#include "pch.h"
#include "CppUnitTest.h"
#include "..//ConsoleApplication1/HelloWorld.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace UnitTest1 {
TEST_CLASS(UnitTest1)
{
public:
TEST_METHOD(TestMethod1)
{
HelloWorld* hello = new HelloWorld();
Assert::AreEqual(hello->sayHello(), std::string("Hello World"));
}
};
}
当我尝试通过测试浏览器运行测试时,我得到:
1>------ Build started: Project: UnitTest1, Configuration: Debug Win32 ------
1>pch.cpp
1>UnitTest1.cpp
1> Creating library C:\Users\Iblob\source\repos\ConsoleApplication1\Debug\UnitTest1.lib and object C:\Users\Iblob\source\repos\ConsoleApplication1\Debug\UnitTest1.exp
1>UnitTest1.obj : error LNK2019: unresolved external symbol "public: __thiscall HelloWorld::HelloWorld(void)" (??0HelloWorld@@QAE@XZ) referenced in function "public: void __thiscall UnitTest1::UnitTest1::TestMethod1(void)" (?TestMethod1@UnitTest1@1@QAEXXZ)
1>UnitTest1.obj : error LNK2019: unresolved external symbol "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall HelloWorld::sayHello(void)" (?sayHello@HelloWorld@@QAE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: void __thiscall UnitTest1::UnitTest1::TestMethod1(void)" (?TestMethod1@UnitTest1@1@QAEXXZ)
1>C:\Users\Iblob\source\repos\ConsoleApplication1\Debug\UnitTest1.dll : fatal error LNK1120: 2 unresolved externals
1>Done building project "UnitTest1.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========
我希望链接器应该能够找到根据Microsoft自己的教程所引用的文件:https://docs.microsoft.com/en-us/visualstudio/test/writing-unit-tests-for-c-cpp?view=vs-2019
我尝试将类头文件和cpp作为现有项添加到我的单元测试项目中,但是当我尝试运行测试时,它只是试图在HelloWorld类中找到#include“ pch.h”。 / p>
我在这里想告诉链接器在哪里可以找到类符号的地方是什么?
答案 0 :(得分:0)
在我的unitTest1.cpp文件中添加#include“ ..//ConsoleApplication1/HelloWorld.cpp”似乎已经解决了问题,尽管我不确定这是否是理想的解决方案,但仍将其标记为答案。 / p>