Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;boost单元测试错误消息_C++_Unit Testing_Boost - Fatal编程技术网

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_消息。用正确的版本更新了答案。