2009-07-23 8 views
3

現在、ブーストテストライブラリの使用方法を学習しており、テストスイートが正常に動作しないようです。次のコードでは、 'test_case_1'は正しく失敗しますが、 'test_suite_1'ではなくMaster Test Suiteにあると報告されています。誤ったテストスイートでのブーストユニットテストの失敗が検出されました

誰かが間違っていることを知っていますか?

#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'は一度しか使えないので、基本的にユニットテスト実行ファイルごとにスイートが1つありますか?また、すべてのテストの失敗は、このスイートのメンバーとして報告され、サブスイート名はありません。確かに私はここで何かを逃している。編集:書式設定 –

答えて

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のコマンドラインの設定オプションへのリンクです。あなたがBOOST_TEST_MODULEを定義したら、

よろしく、
Ovanesまた

0

は、あなたがBOOST_AUTO_TEST_MAINを定義する必要はありません

関連する問題