2012-05-13 24 views
8

Boost.Testに、どのようにして現在の自動テストケースの名前を取得できますか?Boost.Testでは、現在のテストの名前を取得する方法は?

例:例では

#include <boost/test/unit_test.hpp> 
BOOST_AUTO_TEST_CASE(MyTest) 
{ 
    std::cerr << "Starting " << test_name << std::endl; 
    // lots of code here 
    std::cerr << "Ending " << test_name << std::endl; 
} 

は、私は、変数test_nameは "MyTestに" を含むようにしたいです。

+1

[この](https://groups.google.com/forum/?fromgroups=#!topicを見てみましょう/ boost-list/ZzFmu14UfeQ)、これまでのところ私のために働いています –

答えて

17

そのために呼び出されることがある文書化されていない*関数があります。次の行はcerrに現在のテストの名前をフラッシュします:

#include <boost/test/framework.hpp> 

... 

std::cerr << boost::unit_test::framework::current_test_case().p_name 
      << std::endl; 

注しかし、このAPIを使用すると、パラメータ化テストの場合のパラメータをフラッシュしないこと。

あなたはまた、test checkpoints **に興味があるかもしれません(あなたが何をしたいかのようです。)

#include <boost/test/included/unit_test.hpp> 

... 

BOOST_AUTO_TEST_CASE(MyTest) 
{ 
    BOOST_TEST_CHECKPOINT("Starting"); 
    // lots of code here 
    BOOST_TEST_CHECKPOINT("Ending"); 
} 

EDIT

* current_test_case()機能は現在文書化され、the official Boost documentationを参照してください。

** BOOST_TEST_CHECKPOINTは以前はBOOST_CHECKPOINTと呼ばれていました。 Boost changelog (1.35.0)を参照してください。

+0

しかし、私は--run_test = を使用するとその名前を使用するmenageはありません、ワイルドカードを使用してテストを実行することしかできません。正確なテスト名を得る、奇妙な!! – Antonio

+1

解決済み、テストスイートも指定しなければならず、 '--run_test = /'を実行する必要がありました。 – Antonio

+0

私はドキュメントへのリンク+欠落しているインクルードを追加しました。 – BenC

関連する問題