C++ boost 单元测试错误信息

标签 c++ unit-testing boost

我想在我的测试套件中编写一个方法 如下:

void checkParams(arg1, arg2, arg3)
{
BOOST_REQUIRE(arg1==1);
BOOST_REQUIRE(arg2==2);
BOOST_REQUIRE(arg3==3);

}

但是,如果断言失败,我想写一些东西到 stderr。例如, 如果第一个断言失败,我想写: checkParams 失败,参数为 arg1=5、arg2=4、arg3=3

现在写下它生成的消息只是关键检查失败 5==1。

更一般地说,我想在失败时创建一个堆栈跟踪,以便我可以看到一个链 导致这次失败的电话。请注意,此方法由我所有的 BOOST_AUTO_TEST_CASE 调用 方法,但它本身不是 BOOST_AUTO_TEST_CASE。

我该怎么做?

另一个问题:我知道我可以通过提供运行时参数来修改日志级别,

./test --log_level=all

如何在代码中设置 log_level?

最佳答案

你想要BOOST_REQUIRE_MESSAGE .

您可能还想将它们合并到一张支票中:

BOOST_REQUIRE_MESSAGE((arg1 == 1) && (arg2 == 2) && (arg3 = 3),
   "failed with arg1=" << arg1 << " arg2=" << arg2 << " arg3= " << arg3);

关于C++ boost 单元测试错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2104553/

相关文章:

c++ - 为设置比较器获取 "Debug Assertion Failed!"

c++ - 为什么这里需要静态

c - 具有良好单元测试的嵌入式系统代码?

c++ - boost中的正则表达式提取信息

c++ - 在 boost::asio 程序中刷新缓冲区

c++ - 为什么 GoogleMock 报告与完全相同的参数值不匹配?

c++ - 将从基类继承的构造函数与自定义构造函数混合

c# - 为什么 Assert.IsInstanceOfType(0.GetType(), typeof(int)) 会失败?

java - 期望任何东西作为参数来模拟使用 EasyMock

c++ - 如何使用 Boost::Geometry 解析 wkt Geometrycollection?