c++ - 如果所有部分都失败,Catch2 将再次运行测试
问题描述
我有以下使用最新(2.4.0)版本的 Catch2 运行的代码:
#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);
}
如果我运行它,一切都会按预期工作,我得到:
AX
BX
=================================================================
All tests passed (4 assertions in 1 test case)
显然,测试用例运行了两次,每个部分运行一次。
如果我在其中一个部分更改断言REQUIRE(x == 0)
,再次说,一切都按预期工作,Catch2 运行每个部分一次并告诉我第一个失败。REQUIRE(x == 0)
但是,如果我在两个部分中都将断言更改为,结果会令人困惑(我稍微缩短了它):
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
测试显然运行了 3 次,最后一次绕过了这两个部分。这种行为是预期的吗?我曾尝试查看 Catch2 文档,但找不到任何相关内容。
解决方案
推荐阅读
- html - 我不知道如何控制 ahref 的 CSS 高度
- css - SASS 实时编译器混合/变量在我更新主 scss 文件之前不会更新
- python - Pandas 数据框通过添加关联行的值来添加可点击的 url
- mysql - 带有内部联接的 SQL 插入试图插入错误的列
- python - 解码包含 Base64 的 JSON
- python - BST 树错误:TypeError:“int”和“Node”实例之间不支持“<=”
- python-3.x - 如何将 python git repos 作为包导入
- sharepoint - 具有多个条件的现代 SharePoint CAML 查询
- r - 将dfm转换为数据框时出错
- c# - DateTime 的 ASP.Net MVC Tag Helper 不在 Firefox 中呈现