升压测试寄存器异常转换器

发布于 2024-08-23 04:57:24 字数 445 浏览 8 评论 0原文

有谁知道在 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 ();

提前致谢。

Does anybody know how to register my custom exception translator when using auto test cases in Boost.Test? I've found some examples (very few actually), but they do not show how to use this feature with auto test cases which are the biggest advantage of boost.test in my opinion. My example test suite:

    #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 ();

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

2024-08-30 04:57:24

(注意:我仍在使用 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;
}

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

(Note: I'm still using Boost 1.34.1)

Regardless of the AUTO_TEST_CASE feature, to register custom exception handlers you need to implement the init_unit_test_suite main function. (You do not need to register any of your auto tests there.)

All my unit tests projects use a ut_main.cpp file that contains (roughly) the following:
(This is in addition to all the other cpp files containing the actual auto tests.)

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;
}

This should be all you need in addition to your auto test cases.

雨的味道风的声音 2024-08-30 04:57:24

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

Alternatively you can register translator in global fixture

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文