【问题标题】:How can I tell if any BOOST_CHECK tests have failed so far?我如何判断到目前为止是否有任何 BOOST_CHECK 测试失败?
【发布时间】:2014-11-18 19:16:07
【问题描述】:

我有一个 boost 测试用例,它使用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());
}

【问题讨论】:

    标签: c++ boost boost-test


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      BOOST_REQUIRE 另一方面断言测试继续所需的条件。将此宏用于应在失败时中止测试的断言。在您的情况下,您似乎想对foo.do_something() 之前的每个断言使用它。

      【讨论】:

      • 这行得通,但我故意使用BOOST_CHECK,以便我可以在开始时查看是否有多个错误。我真的很想保留它。
      • @TavianBarnes 我在the source 中环顾四周,它似乎没有存储任何可用于完成此操作的状态。但是,您可以编写自己的包装宏来完成此操作。我可能会想出一个并将其添加到我的答案中。
      • 看起来this 会告诉我我需要知道什么
      猜你喜欢
      • 2018-02-02
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-29
      • 2014-04-12
      • 1970-01-01
      • 2016-01-31
      相关资源
      最近更新 更多