到目前为止,如何判断BOOST_CHECK测试是否失败?

时间:2014-11-18 19:16:08

标签: c++ boost boost-test

我有一个使用BOOST_CHECK*进行一些检查的boost测试用例,因此失败不会立即停止测试。但是在某些时候,如果到目前为止发生任何测试失败,我想停止,因为如果完整性检查失败,测试的其余部分是没有意义的吗?例如:

BOOST_AUTO_TEST_CASE(test_something) {
    Foo foo;
    BOOST_CHECK(foo.is_initialized());
    BOOST_CHECK(foo.is_ready());
    BOOST_CHECK(foo.is_connected());
    // ...

    // I want something like this:
    BOOST_REQUIRE_CHECKS_HAVE_PASSED();

    foo.do_something();
    BOOST_CHECK(foo.is_successful());
}

2 个答案:

答案 0 :(得分:5)

可以按如下方式检查当前测试的状态:

namespace ut = boost::unit_test;
auto test_id = ut::framework::current_test_case().p_id;
BOOST_REQUIRE(ut::results_collector.results(test_id).passed());

答案 1 :(得分:1)

BOOST_CHECK在测试通过所需的条件下断言,但测试不需要继续执行。

另一方面,

BOOST_REQUIRE在测试继续进行的条件下断言。将此宏用于应该在失败时中止测试的断言。在您的情况下,您似乎希望在foo.do_something()之前的每个断言中使用它。