我想在测试套件中编写一个方法
如下:
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。
更一般而言,我想在失败时创建一个堆栈跟踪,以便可以看到一个链
导致此失败的 call 数量。请注意,我所有的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);