2013-02-05 43 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

相關問題