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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以将多个BOOST单元测试链接到一个测试二进制文件中吗?相关的知识,希望对你有一定的参考价值。

我最近开始尝试将一个令人尊敬的大型(> 100万行)程序进行测试。目前没有单元测试。此外,程序链接为每个单独的文件链接在一起 - 没有组件库。此外,对象是高度相互依赖的,并且很难(不可能?)链接到任何目标文件而不链接到它们中的至少一半。

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

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

  • 是否可以将多个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和所有模块编译为一个大型可执行文件。

另一答案

另一种方法是http://neyasystems.com/an-engineers-guide-to-unit-testing-cmake-and-boost-unit-tests/,你不是在那里创建一个文件,但是cmake文件中的enable_testing()允许你用你的生成器一次调用所有的测试。如果您的发电机是制造的,那么它只是进行测试。

以上是关于我可以将多个BOOST单元测试链接到一个测试二进制文件中吗?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 应用程序的 Xcode 单元测试中的链接问题与嵌入式 C++ 代码

在编译时重写或破坏 C 单元测试的函数链接

Boost.Spirit 的单元测试

Boost 链接问题 - 多个版本

将 boost 二进制文件嵌入到 xcode 项目中

如何将预单元测试步骤添加到我的*** Makefile.am?