2013-02-05 40 views
26

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

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

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

  • 是否有可能将多个BOOST单元测试文件链接到一个测试可执行文件?
  • 有没有更好的解决方案?
+0

看起来可能有办法做到这一点。更新要遵循。 – dbn

回答

31

我想,这正是如何使用升压测试。 我会保持一个短暂的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和你的所有模块编译成一个大的可执行文件。

+1

当我尝试这个,测试编译和链接,但执行后,我得到: 测试设置错误:测试树是空的 –

+2

您还需要包含所有您的模块* .cpp文件到main.cpp中。否则测试运行者不知道你的测试。 – Ace7k3

+1

@ Ace7k3,我认为这是不好的做法''包括'.cpp'文件。这是一个例外吗? – tjwrona1992

相关问题