我有一个使用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());
}
答案 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()
之前的每个断言中使用它。