gpt4 book ai didi

c++ - 检测 boost 测试用例是否失败

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:33 25 4
gpt4 key购买 nike

我想记录更多关于 BOOST 断言失败的数据。不确定这是否可能以及如何实现。

BOOST_AUTO_TEST_CASE( TestCase1 )
{
Data d;

d.fillUp(...);

d.operation1(...);
BOOST_CHECK(d == ...);

d.operation2(...);
BOOST_CHECK(d == ...);

...

if( /* anything above failed */)
{
log << d;
}
}

我对最后一个条件有疑问。你能建议吗?我希望错误日志指示发生断言时 Data 对象中的条件。理想情况下,我希望它们被转储一次,即使在测试用例中发生了多个断言。

最佳答案

我正在执行以下操作来完成您想要的:

BOOST_CHECK_MESSAGE( current_test_passing(), d);

使用我刚刚添加到我的测试辅助函数集合中的以下函数:

#include <boost/test/results_collector.hpp>

inline bool current_test_passing()
{
using namespace boost::unit_test;
test_case::id_t id = framework::current_test_case().p_id;
test_results rez = results_collector.results(id);
return rez.passed();
}

我发现与 BOOST_REQUIRE_ 结合使用对于循环很有用……因此我可以快速查看许多检查中的任何一个特定迭代失败,而无需在每个检查中添加“i=”消息:

for (int i=0; i < HUGE_NUMBER; ++i) {
… many checks …
BOOST_REQUIRE_MESSAGE( current_test_passing(), "FAILED i=" << i );
}

关于c++ - 检测 boost 测试用例是否失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18466857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com