Pat*_*eck 6 c++ boost unit-testing
我想记录一些关于 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;
}
}
Run Code Online (Sandbox Code Playgroud)
我对最后一个条件有问题。你能建议吗?我希望错误日志指示发生断言时 Data 对象中的条件。理想情况下,即使测试用例中发生了多个断言,我也希望它们被转储一次。
小智 5
我正在做以下事情来完成你想要的:
BOOST_CHECK_MESSAGE( current_test_passing(), d);
Run Code Online (Sandbox Code Playgroud)
使用我刚刚添加到我的测试辅助函数集合中的以下函数:
#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();
}
Run Code Online (Sandbox Code Playgroud)
我发现结合 BOOST_REQUIRE_ 对循环很有用......所以我可以快速查看许多检查中的任何一个失败的特定迭代,而不必向每个检查添加“i =”消息:
for (int i=0; i < HUGE_NUMBER; ++i) {
… many checks …
BOOST_REQUIRE_MESSAGE( current_test_passing(), "FAILED i=" << i );
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1099 次 |
| 最近记录: |