组织要进行单元测试的 C++ 项目的有效方法是什么?

fxa*_*xam 5 c++ code-organization visual-studio

我想知道组织将要进行单元测试的 C++ 项目和类的有效方法是什么。我读过很多与单元测试相关的帖子,但找不到实际的例子。

以下是我收集的一些方法:

方法A

  • 项目 A:“包含”项目 C 中的类的应用程序 (.exe) 项目
  • 项目 B:“包含”项目 C 中的类的单元测试 (.exe) 项目
  • 项目 C:静态库 (.lib) 项目,保留项目 A 使用的所有类

方法B

  • 项目 A:应用程序 (.exe) 项目,其内部包含所有类。
  • 项目 B:“链接”到项目 A 中的类的单元测试 (.exe) 项目

方法C(来自Miguel)

  • 只有一个项目,三种配置:
    • 调试:在调试模式下构建应用程序 .exe。
    • 发布:在发布模式下构建您的应用程序.exe。
    • 测试:构建单元测试框架,用单元测试 main() 替换应用程序的 main()

哪种方式更合适呢?你有什么其他的建议?

Dae*_*min 4

我以前用过第一种方法,效果很好。将大部分代码放在静态库项目中,让主可执行项目仅包含主函数,并将测试和测试主函数放在第三个项目中。这两个可执行项目将链接到静态库并重用代码。

这样做的主要好处是:

  • 正在测试的代码与您的应用程序中使用的代码完全相同。
  • 您可以测试调试和发布配置,以确保两者按预期工作。(您可以推断调试和发布您可能需要的任何配置。)
  • 由于两个可执行项目使用相同的构建库,因此构建时间被最小化。
  • 可以让构建系统同时构建测试可执行文件和主可执行文件,并在构建后运行测试可执行文件。