Boost Test регистр исключений переводчик - PullRequest
4 голосов
/ 01 марта 2010

Кто-нибудь знает, как зарегистрировать мой переводчик пользовательских исключений при использовании автоматических тестовых случаев в 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 ();

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 17 марта 2011

В качестве альтернативы вы можете зарегистрировать переводчик в глобальном приспособлении

1 голос
/ 09 сентября 2010

(Примечание: я все еще использую 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;
}

Это должно быть все, что вам нужно в дополнение к автоматическим тестам.

...