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_suitemain 函数。(您不需要在那里注册任何自动测试。)

我所有的单元测试项目都使用一个 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 回答