Как я могу узнать, провалились ли какие-либо тесты 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()
,