Как я могу узнать, провалились ли какие-либо тесты BOOST_CHECK до сих пор?

У меня есть тестовый случай повышения, который делает некоторые проверки, используя BOOST_CHECK*поэтому неудачи не сразу останавливают тест. Но в какой-то момент я хотел бы прекратить, если какие-либо тестовые сбои произошли до сих пор, потому что остальная часть теста не имеет смысла запускать, если проверки работоспособности не пройдены? Например:

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 ответа

Решение

Состояние текущего теста можно проверить следующим образом:

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

BOOST_CHECK утверждает условие, которое требуется для прохождения теста, но не требуется для продолжения выполнения теста.

BOOST_REQUIRE с другой стороны, утверждает условие, необходимое для продолжения теста. Используйте этот макрос для утверждений, которые должны прервать проверку при сбое. В вашем случае похоже, что вы хотите использовать это для каждого утверждения до foo.do_something(),

Другие вопросы по тегам