我可以将多个BOOST单元测试链接到一个测试二进制文件中吗

Can I link multiple BOOST unit tests into a single test binary?

本文关键字:一个 测试 二进制文件 BOOST 单元测试 我可以 链接      更新时间:2023-10-16

我最近开始尝试对一个古老的大型(>100万行)程序进行测试。当前没有单元测试。此外,程序是链接在一起的每个单独的文件-没有组件库。此外,对象高度相互依赖,如果不链接到至少一半的对象文件,则很难(不可能?)链接到任何对象文件。

是的,我知道,我的生活很糟糕。

我想做一些重构(显然),但在开始移动之前,我想先做一些测试。我目前的想法是编译一个单独的"测试程序",运行我创建的所有测试。这将大大简化我的联系问题,让我专注于真正的问题。所以我有两个问题:

  • 是否可以将多个BOOST单元测试文件链接到一个测试可执行文件中
  • 有更好的解决方案吗

我想,这正是使用boost测试的方法。我会保留一个简短的main.cpp文件,由2行组成:

#define BOOST_TEST_MODULE "C++ Unit Tests for MyTangledLibrary"
#include <boost/test/included/unit_test.hpp>

然后我会不断添加测试模块*.cpp文件,这些文件一起编译成一个可执行的

#include <boost/test/unit_test.hpp>
<< your include files >>
BOOST_AUTO_TEST_SUITE(FancyShmancyLogic)
BOOST_AUTO_TEST_CASE(TestingIf2x3equals6)
{
  ...
}
BOOST_AUTO_TEST_CASE(TestingIf2x2equals4)
{
  ...
}
BOOST_AUTO_TEST_SUITE_END()

是的,您将能够将main.cpp和所有模块编译为一个大型可执行文件。