繁体   English   中英

在 Visual Studio 中为 C++ 设置 UnitTest 项目并在主项目中包含其他目录的正确方法是什么?

[英]What is the correct way to set up a UnitTest project for C++ in Visual Studio with additional include directories in the main Project?

我正在尝试在 Visual Studio 2019 中测试 C++ 项目。

应该测试的项目有一个类 MyClass。 项目文件夹有一个目录“include”,我确实在Properties > C/C++ > General > Additional include directory 中设置了路径。

我的类.h:

#pragma once

#include <string>

class MyClass
{
public:
    void print() const;
};

我的类.cpp:

#include "MyClass.h"

void MyClass::print() const {
    printf("MyClass print"); 
}

这段代码执行得很好。

现在,当我尝试在同一解决方案中使用新的 UnitTest 项目测试此解决方案时,我遇到了一些问题,即如何包含 MyClass 并在那里对其进行测试。

我在我的 UnitTest 项目中包含了对第一个项目的引用。

UnitTest1.cpp 中的变体 1:

#include "..\ConsoleApplication1\include\MyClass.h"
#include "..\ConsoleApplication1\MyClass.cpp"

结果:错误 C2011 ->“MyClass”:类类型新定义

错误 C2027 -> 使用未定义的类型“MyClass”

错误 C2070 ->“打印”:非成员函数上不允许使用修饰符

错误 C2079 -> 未定义的类“MyClass”

UnitTest.cpp 中的变体 2:

#include "..\ConsoleApplication1\include\MyClass.h"

结果:错误 LNK2019,1120 未解析的外部

我相信这是因为主项目中有额外的包含目录。 没有额外的包含目录和 MyClass.cpp 中的“#include”include\\MyClass.h,UnitTest 可以正常工作。如何将原始项目中的类正确地包含到 UnitTest 项目中?

您必须将 MyClass.cpp 添加到测试项目的源中。

解决方案是还将第一个项目中相同的“include”文件夹添加到TestUnit Project中的Properties > C/C++ > General > Additional include 目录

然后我可以添加

#include "MyClass.h"
#include "..\ConsoleApplication1\MyClass.cpp"

到 TestUnit1.cpp 文件并正确使用类 MyClass。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM