我目前正在使用Visual Studio编写C ++程序。
现在,我想添加第二个测试项目,它应该包含我的单元测试。问题是,如果我想测试自己的代码,我必须将源项目的每个.cpp文件从我的主项目添加到第二个项目,即使我包含了标题。还有更好的选择吗?
非常感谢。
答案 0 :(得分:4)
您可以按照下一种方式:
.h
和.lib
包含到您的可执行文件中Test
项目我将尝试用下一个例子解释我的想法:
项目MyProject
:
main.cpp中:
#include "my_vector.h"
#include "my_matrix.h"
int main()
{
MyVector vect;
MyMatrix matrix;
// some operations with vect and matrix
}
my_vector.h:
#pragma once
struct MyVector
{
// fields and methods for MyVector
}
my_vector.cpp:
#include "my_vector.h"
// definitions of methods for MyVector
my_matrix.h:
#pragma once
struct MyMatrix
{
// fields and methods for MyMatrix
}
my_matrix.cpp:
#include "my_matrix.h"
// definitions of methods for MyMatrix
项目Test
:
main.cpp中:
// depends on what testing framework do you use
my_vector_test.cpp:
#include "my_vector.h"
// code for MyVector testing
my_matrix_test.cpp:
#include "my_matrix.h"
// code for MyMatrix testing
你做了什么:
MyProject
仅文件main.cpp
MyMath
并将my_vector.h
,my_vector.cpp
,my_matrix.h
,my_matrix.cpp
移至MyMath.lib
添加到MyProject
MyMath.lib
添加到Test
答案 1 :(得分:0)
这个问题很老了,已经有了答案,但我觉得值得一提的是另一种解决测试项目中包含cpp文件问题的方法。
我最近遇到了这个问题,因为我负担不起将所有要测试的内容封装在一个 lib 静态项目中,所以我最终在测试项目中进行了统一构建。
Unity build consite 在测试项目中有一个 cpp 文件,通常称为“UnityBuild.cpp”。在其中,您必须包含“#include”所有您想要的 cpp 文件。
关于 Unity Builds 的更多信息(它很旧,但是很好读) https://buffered.io/posts/the-magic-of-unity-builds/