4

Boost.Test で自動テスト ケースを使用するときにカスタム例外トランスレーターを登録する方法を知っている人はいますか? 私はいくつかの例を見つけました (実際には非常に少ない) が、私の意見では、boost.test の最大の利点である自動テスト ケースでこの機能を使用する方法を示していません。私のテストスイートの例:

    #define BOOST_TEST_MODULE StateMachineTest
    #define BOOST_TEST_DYN_LINK

    #include <boost/test/unit_test.hpp>

    BOOST_AUTO_TEST_SUITE (FirstTest);

    BOOST_AUTO_TEST_CASE (testBasic)
    {
            BOOST_CHECK (true);
    }

    BOOST_AUTO_TEST_SUITE_END ();

前もって感謝します。

4

2 に答える 2

1

または、グローバル フィクスチャにトランスレータを登録することもできます

于 2011-03-16T23:34:51.383 に答える
1

(注: 私はまだ Boost 1.34.1 を使用しています)

機能に関係なく、カスタム例外ハンドラーを登録するには、メイン関数AUTO_TEST_CASEを実装する必要があります。init_unit_test_suite(そこに自動テストを登録する必要はありません。)

私のすべてのユニット テスト プロジェクトは、(大まかに) 以下を含む ut_main.cpp ファイルを使用します: (これは、実際の自動テストを含む他のすべての cpp ファイルに追加されます。)

void translate_mfc_exception(CException* pMfcEx) {
  ...
  BOOST_ERROR(msg);
}
// ...
using namespace ::boost::unit_test;
test_suite* init_unit_test_suite(int argc, char* argv[])
{

  // Initialize global Handlers:
  unit_test_monitor.
    register_exception_translator<CException*>( &translate_mfc_exception );

  // Return dummy suite to make framework happy:
  test_suite* test = BOOST_TEST_SUITE( "Empty Test Suite" );
  return test;
}

自動テスト ケースに加えて必要なのはこれだけです。

于 2010-09-09T06:16:27.293 に答える