在测试项目中包括.cpp文件的更好方法?

And*_*eas 0 c++ unit-testing visual-studio

我目前正在使用Visual Studio编写C ++程序。

现在,我想添加第二个Test项目,该项目应该包含我的单元测试。现在的问题是,如果我想测试自己的代码,则即使我包含了标头,也必须将源文件中每个主文件的.cpp文件从主项目添加到第二个项目中。有更好的选择吗?

非常感谢你。

zed*_*ian 5

您可以按照以下方式操作:

  1. 将您的主项目拆分为可执行和静态或动态库
  2. 将所有需要测试的代码移到此类库中,并将其.h.lib放入可执行文件中
  3. 对您的Test项目做同样的事情

我将在下一个示例中尝试解释我的想法:

项目名称MyProject

main.cpp:

#include "my_vector.h"
#include "my_matrix.h"

int main()
{
    MyVector vect;
    MyMatrix matrix;

    // some operations with vect and matrix
}
Run Code Online (Sandbox Code Playgroud)

my_vector.h:

#pragma once

struct MyVector
{ 
    // fields and methods for MyVector
}
Run Code Online (Sandbox Code Playgroud)

my_vector.cpp:

#include "my_vector.h"

// definitions of methods for MyVector
Run Code Online (Sandbox Code Playgroud)

my_matrix.h:

#pragma once

struct MyMatrix
{ 
    // fields and methods for MyMatrix
}
Run Code Online (Sandbox Code Playgroud)

my_matrix.cpp:

#include "my_matrix.h"

// definitions of methods for MyMatrix
Run Code Online (Sandbox Code Playgroud)

项目名称Test

main.cpp:

// depends on what testing framework do you use
Run Code Online (Sandbox Code Playgroud)

my_vector_test.cpp:

#include "my_vector.h"

// code for MyVector testing
Run Code Online (Sandbox Code Playgroud)

my_matrix_test.cpp:

#include "my_matrix.h"

// code for MyMatrix testing
Run Code Online (Sandbox Code Playgroud)

你做什么:

  1. MyProject仅保留文件main.cpp
  2. 添加的项目MyMath和举措my_vector.hmy_vector.cppmy_matrix.hmy_matrix.cpp
  3. 添加MyMath.lib到的链接MyProject
  4. 添加MyMath.lib到的链接Test
  5. 利润!