- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当我有以下自动测试用例时:
class MyException: virtual public boost::exception,
virtual public std::exception
{
};
BOOST_AUTO_TEST_CASE(ExceptionTest)
{
BOOST_THROW_EXCEPTION(MyException());
}
运行测试给出:
ExceptionTest.cpp(14): fatal error in "void ExceptionTest::test_method()":
std::exception: std::exception
我如何更改它以便显示异常的名称 (MyException
) 和 boost::diagnostic_information()
而不是 std::exception
?我尝试将自己的异常转换器注册到执行监视器,但似乎 std::exception
在尝试任何已注册的转换器之前被处理。
我在 Linux 上使用 boost 1.44 和 gcc 4.4.5。
最佳答案
我找到了如何做到这一点:
像这样使用全局夹具:
#include "boost/test/unit_test_monitor.hpp"
class Fixture
{
public:
Fixture();
~Fixture();
};
void translateBoostException(const boost::exception &e)
{
BOOST_FAIL(boost::diagnostic_information(e));
}
Fixture::Fixture()
{
boost::unit_test::unit_test_monitor.register_exception_translator<boost::exception>(&translateBoostException);
}
Fixture::~Fixture()
{
}
BOOST_GLOBAL_FIXTURE( Fixture )
然后是下面的测试:
class MyException: virtual public boost::exception,
virtual public std::exception
{
};
BOOST_AUTO_TEST_CASE(ExceptionTest)
{
BOOST_THROW_EXCEPTION(MyException());
}
给予:
Running 1 test case...
/home/..../SetupTestFixture.cpp(18): fatal error in "ConfigFile":
/home/..../Test.cpp(16): Throw in function void ConfigFile::test_method()
Dynamic exception type: boost::exception_detail::clone_impl<MyException>
std::exception::what: std::exception
*** 1 failure detected in test suite "ExceptionTest"
关于c++ - 如何将 boost::exception 与 boost::unit_test 结合起来,并有一个很好的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5392517/
我是 C++ 自动单元测试的新手。我按照boost::unit_test的说明,通过调用boost::unit_test中的函数unit_test_main完成了一个测试方案。我运行测试程序没问题。但
我正在尝试学习如何测试程序,所以我尝试了 Boost。我已经开始阅读它并且 here我遇到过这一行: 现在我可以编译它并链接到单元测试框架。 我应该从哪里以及如何获得单元测试框架?它是什么? 我只是不
当从 Visual Studio 运行控制台程序时,控制台显示,程序运行,然后控制台消失,您没有机会看到它。 一般来说,我在 main 的返回语句之前添加这些行: std::cout << "Pres
我有以下代码: bool f() { command = "mkdir -p /\/\/"; result = aSystemCall(command); if (result == ..
我有简单的 boost 单元测试片段: #define BOOST_TEST_DYN_LINK #define BOOST_TEST_MAIN #define BOOST_TEST_MODULE My
这个问题是continuation to a previous question在 boost::test::unit_test 上。 我已经编写了单元测试并构建了单元测试。这是构建输出: 2
前几天,我决定需要了解 Windows 平台上 C++ 的测试驱动开发(使用 Visual Studio 2010 Premium)。 在决定试用 boost 的单元测试框架之前,我环顾四周。我应该说
我经常使用 Boost.Test 来测试数值。我经常需要比较数学对象的值。下面是一个玩具示例,展示了我如何进行大量测试。 #define BOOST_TEST_MODULE VektorTest #i
我正在使用 boost::unit_test::data::random (安装了 boost-1.61.0_1)并且我在使用 boost::unit_test::data::random(-FLT_
当我有以下自动测试用例时: class MyException: virtual public boost::exception, virtual public
我是一名优秀的程序员,十分优秀!