11

で、現在の自動テスト ケースの名前を取得するに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」を含めたいと考えています。

4

2 に答える 2

22

その目的で呼び出される可能性がある、文書化されていない*関数があります。次の行は、現在のテストの名前を にフラッシュしcerrます。

#include <boost/test/framework.hpp>

...

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

ただし、この API を使用しても、パラメーター化されたテストの場合はパラメーターがフラッシュされないことに注意してください。

テスト チェックポイント**にも興味があるかもしれません(これはあなたがやりたいことのようです)。

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

...

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

編集

*current_test_case()関数は文書化されました。Boost の公式ドキュメントを参照してください。

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

于 2012-10-23T09:23:38.783 に答える
1

スイート名に関する別の質問では、単に出力するのではなく、名前を抽出する方法が示されています。

auto test_name = std::string(boost::unit_test::framework::current_test_case().p_name)
于 2015-08-04T20:43:30.553 に答える