2011-02-03 68 views
3

我試圖用升壓測試庫實現單元測試。我從閱讀增強站點的手冊開始。在此之後,我在我現有的一個項目中做了一個簡單的測試程序。我面臨的唯一問題是我無法看到測試結果。我相信我在做一些錯誤的事情:)但我無法弄清楚。以下是我的項目的細節升壓測試沒有輸出

我使用視覺studio8此: 我有一個名爲MyProject.sln

隨着其他項目的解決方案我有一個名爲MyDLL.vcproj計劃(The該項目的類型是DLL

隨着MYDLL凸出其他文件,我添加一個新的cpp文件名MyTest.cpp,該文件包含以下代碼:

#define BOOST_TEST_DYN_LINK 
#define BOOST_TEST_MAIN 
//#define BOOST_TEST_MODULE MyTestTestModue //no need for this maro if above macro is used 
#include <boost/test/unit_test.hpp> 

BOOST_AUTO_TEST_CASE(SampleTC) 
{ 
    BOOST_CHECK(true); 
};  

我在做項目MYDLL屬性表以下更改

C++ -> General -> Additional Include Dependencies = D:\MyProject\Boost\boost\test 
Linker -> General -> Additional Libray Directories = D:\MyProject\Boost\lib\win32\Debug 
Linker -> System -> SubSystem = (/SUBSYSTEM:CONSOLE) 

我讀了所有的手冊中給出的編譯細節,但仍無法得到輸出。理想情況下,我想使用Boost測試作爲獨立的庫(UTF的動態庫varian)。

回答

2

我相信我正在做的事情 錯了:)

其實,我認爲這個問題是您做正確的事情。

您的測試通過,因爲檢查的值是true,默認情況下,Boost.Test只輸出關於失敗測試的信息。您需要設置日誌級別,這可以通過以下兩種方式之一完成:將--log_level=all作爲測試可執行文件的選項,或者將環境變量BOOST_TEST_LOG_LEVEL設置爲all

查看this page of the documentation所有運行時間參數。

編輯:它實際上--log_level(在中間下劃線)

1

我們的單元測試通過刀架編譯調用;所以我們不能輕易地將參數傳遞給EXE(無需更改工具配置並影響所有測試)。

所以設置日誌級閾值的另一種方式是從代碼中調用Boost單元測試記錄單:您的消息是

boost::unit_test::unit_test_log_t::instance().set_threshold_level(boost::unit_test::log_messages); 

爲了增加樂趣,輸出的文件名和行號顯示:

#define MY_BOOST_TEST_MESSAGE(msg) BOOST_TEST_MESSAGE(`__FILE__` << `__LINE__` << " " << msg)