在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 ();
提前致谢。
答案 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)
或者,您可以在全局夹具中注册翻译器