首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果所有部分都失败,Catch2将再次运行测试

如果所有部分都失败,Catch2将再次运行测试
EN

Stack Overflow用户
提问于 2018-09-20 19:38:51
回答 1查看 1.3K关注 0票数 4

下面是我使用最新版本(2.4.0) Catch2运行的代码:

代码语言:javascript
复制
#include "catch.hpp"
#include <iostream>
TEST_CASE("Test") {
    int x = 0;
    SECTION("A") {
            std::cout << "A";
            ++x;
            REQUIRE(x == 1);
    }
    SECTION("B") {
            std::cout << "B";
            ++x;
            REQUIRE(x == 1);
    }
    std::cout << "X\n";
    REQUIRE(x == 1);
}

如果我运行这个程序,一切都按预期工作,我得到:

代码语言:javascript
复制
AX
BX
=================================================================
All tests passed (4 assertions in 1 test case)

显然,测试用例运行两次,每节运行一次。

如果我更改了其中一节中的断言,告诉REQUIRE(x == 0),一切都按预期工作,Catch2运行每个部分一次,并告诉我第一个部分失败了。但是,如果我在这两个部分中将断言更改为REQUIRE(x == 0),则结果是令人困惑的(我稍微缩短了它):

代码语言:javascript
复制
A
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a.out is a Catch v2.4.0 host application.
Run with -? for options
---------------------------------------------------------------------
Test
  A
---------------------------------------------------------------------
test.cpp:10: FAILED:
  REQUIRE( x == 0 )
with expansion:
  1 == 0
B--------------------------------------------------------------------
Test
  B
---------------------------------------------------------------------
test.cpp:15: FAILED:
  REQUIRE( x == 0 )
with expansion:
  1 == 0

X
---------------------------------------------------------------------
Test
---------------------------------------------------------------------
test.cpp:19: FAILED:
  REQUIRE( x == 1 )
with expansion:
  0 == 1
=====================================================================
test cases: 1 | 1 failed
assertions: 3 | 3 failed

测试显然运行了三次,最后一次绕过了这两个部分。这是预期的行为吗?我试过查看Catch2文档,但没有找到任何相关的内容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-20 20:03:30

来自文档

在每次通过TEST_CASE运行时都会执行一个叶部分。其他部分被跳过。下一次执行下一节,以此类推,直到没有遇到新的部分。

因此,有问题的测试必须运行3次。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52432147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档