2009-07-23 99 views
3

我正在學習如何使用Boost測試庫,而且我似乎無法讓測試套件正常工作。在下面的代碼中,'test_case_1'失敗了,但它報告在主測試套件中,而不是'test_suite_1'。在錯誤的測試套件中檢測到提升單元測試失敗

任何人都知道我在做什麼錯了?

#define BOOST_AUTO_TEST_MAIN 
#include <boost/test/auto_unit_test.hpp> 

BOOST_AUTO_TEST_SUITE(test_suite_1); 

BOOST_AUTO_TEST_CASE(test_case_1) { 
    BOOST_REQUIRE_EQUAL(1, 2); 
} 

BOOST_AUTO_TEST_SUITE_END(); 

編輯:

Ovanes的回答更讓我體會到了浴室的層次更好 - 在這種情況下test_suite_1是根套件,它在默認情況下被命名的子套件‘主測試套件’。默認日誌記錄只顯示根套件,這不是我期望的,我可以處理它:)

您可以通過定義BOOST_TEST_MODULE來設置根套件名稱 - 因此上述示例的替代版本預期的錯誤信息是:

#define BOOST_TEST_MODULE test_suite_1 
#define BOOST_AUTO_TEST_MAIN 

#include <boost/test/auto_unit_test.hpp> 

BOOST_AUTO_TEST_CASE(test_case_1) { 
    BOOST_REQUIRE_EQUAL(1, 2); 
} 
+0

我很高興我發現了這一點,但我在這種行爲完全採空區,砸到。由於您只能使用`BOOST_TEST_MODULE`,這是否意味着每個單元測試可執行文件基本上只有一個套件?並且所有測試失敗都將作爲此套件的成員進行報告,並且沒有子套件名稱?當然,我在這裏錯過了一些東西。編輯:格式 – 2012-07-17 16:30:47

回答

2

這取決於如何配置記錄器以生成報告。例如傳遞給你的例子--log_level =所有會導致下面的輸出:

Running 1 test case... 
Entering test suite "Master Test Suite" 
Entering test suite "test_suite_1" 
Entering test case "test_case_1" 
d:/projects/cpp/test/main.cpp(9): fatal error in "test_case_1": critical check 1 == 2 failed [1 != 2] 
Leaving test case "test_case_1" 
Leaving test suite "test_suite_1" 
Leaving test suite "Master Test Suite" 

*** 1 failure detected in test suite "Master Test Suite" 

這裏是鏈接到的Boost Test Framework命令行配置選項。

問候,
Ovanes

0

而且,一旦你定義BOOST_TEST_MODULE,你並不需要定義BOOST_AUTO_TEST_MAIN

相關問題