Boost测试寄存器异常翻译器

时间:2010-03-01 18:57:24

标签: c++ unit-testing boost-test

在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 个答案:

答案 0 :(得分:1)

(注意:我还在使用Boost 1.34.1)

无论AUTO_TEST_CASE功能如何,要注册自定义异常处理程序,您需要实现init_unit_test_suite main函数。 (您无需在那里注册任何自动测试。)

我的所有单元测试项目都使用包含(大致)以下内容的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;
}

除了您的自动测试用例之外,这应该是您所需要的。

答案 1 :(得分:1)

或者,您可以在全局夹具中注册翻译器