检测升压测试用例是否失败

时间:2013-08-27 13:28:11

标签: c++ unit-testing boost

我想记录一些关于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对象中的条件。理想情况下,我希望它们被转储一次,即使测试用例中发生了多个断言。

1 个答案:

答案 0 :(得分:3)

我正在做以下事情来完成你想要的事情:

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_组合的循环非常有用...所以我可以快速查看哪个特定迭代中的任何一个检查失败而无需添加&#34; i =&#34;给每张支票留言:

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