C++ C++;boost单元测试错误消息
我想在我的测试套件中编写一个方法 详情如下:C++ C++;boost单元测试错误消息,c++,unit-testing,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 更一般地说,我想在失
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
更一般地说,我想在失败时创建一个stacktrace,这样我就可以看到一个链
导致此故障的呼叫数。注意,我的所有BOOST\u AUTO\u TEST\u案例都调用了这个方法
方法,但它本身不是一个BOOST\u AUTO\u测试案例
我该怎么做
另一个问题:我知道我可以通过提供运行时参数来修改日志记录级别
./test --log_level=all
如何在代码中设置日志级别?您需要的
您可能还希望将这些合并到单个检查中:
BOOST_REQUIRE_MESSAGE((arg1 == 1) && (arg2 == 2) && (arg3 = 3),
"failed with arg1=" << arg1 << " arg2=" << arg2 << " arg3= " << arg3);
BOOST\u REQUIRE\u消息((arg1==1)&&&(arg2==2)&&(arg3=3),
失败,返回arg1=“您想要的
您可能还希望将这些合并到单个检查中:
BOOST_REQUIRE_MESSAGE((arg1 == 1) && (arg2 == 2) && (arg3 = 3),
"failed with arg1=" << arg1 << " arg2=" << arg2 << " arg3= " << arg3);
BOOST\u REQUIRE\u消息((arg1==1)&&&(arg2==2)&&(arg3=3),
“arg1失败=“在BOOST\u REQUIRE
之前,我会使用BOOST\u CHECK
或BOOST\u CHECK\u EQUAL
只报告错误并继续,因此测试失败,但您会看到所有错误的值
如果要强制测试在之后停止,请在之后使用BOOST_REQUIRE
void checkParams(arg1, arg2, arg3)
{
BOOST_CHECK_EQUAL(1, arg1);
BOOST_CHECK_EQUAL(2, arg2);
BOOST_CHECK_EQUAL(3, arg3);
BOOST_REQUIRE(arg1==1 && arg2==2 && arg3==3);
}
在BOOST\u REQUIRE
之前,我会使用BOOST\u CHECK
或BOOST\u CHECK\u EQUAL
,BOOST\u CHECK
只报告错误并继续,因此测试失败,但您会看到所有错误的值
如果要强制测试在之后停止,请在之后使用BOOST_REQUIRE
void checkParams(arg1, arg2, arg3)
{
BOOST_CHECK_EQUAL(1, arg1);
BOOST_CHECK_EQUAL(2, arg2);
BOOST_CHECK_EQUAL(3, arg3);
BOOST_REQUIRE(arg1==1 && arg2==2 && arg3==3);
}
Boost 1.40似乎不允许我将Boost_消息作为第二个参数(仅为文字字符串)。哦,在不需要的时候输入Boost_消息。用正确的版本更新了答案。Boost 1.40似乎不允许我将Boost_消息作为第二个参数(仅为文字字符串).Oops,在不需要的时候输入BOOST_消息。用正确的版本更新了答案。