问题标签 [catch2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
904 浏览

c++ - 如何避免使用 CMake FetchContent 进行更新检查?

全部。

我决定使用新的 cmake 宏来下载外部依赖项。我从 Catch2 库的文档中获取了示例代码。

该解决方案效果很好,除了能够在我离线时重新启动 cmake(没有 wifi 和移动网络,只有我和我的笔记本电脑)。我收到以下错误:

是否可以一次下载依赖项,检查修订并且不要每次都尝试连接到远程服务器?

0 投票
0 回答
59 浏览

c++ - 无法在运行 Apple LLVM 版本 10.0.1 的 mac 上进行 catch2 hello 测试

我只是在尝试我的教程来尝试 catch2 单元测试库。我在 10.14 中使用 mac。我没有完整的 XCode,只有 cmd 工具和 macports 在我的设置中运行完美(没有 brew)。我按照建议使用合并的单个头文件和源文件。

然而,一个简单的教程:

给出了许多编译错误 - snip:

请建议,谢谢。

编辑:

在@Tiib 建议尝试g++ -std=c++17编译和构建代码之后。g++ -std=c++11也没有工作。不明白为什么。

0 投票
1 回答
78 浏览

c++ - 如何在 Azure DevOps CI/CD 管道的 Catch2 C++ 测试中启用故障转储?

我正在为 Windows 开发 C++ 软件产品。我使用 Catch2 框架为它编写了测试。它们在 Azure Dev Ops (ADO) 的 CI/CD 管道中实现自动化。当我的代码发生崩溃(例如未处理的异常)时,我想做的是在此 ADO 管道中自动创建并保存崩溃转储(.dmp 文件)。我在 Catch2 框架中看不到任何允许故障转储收集的内容。我在别处使用工具 procdump.exe 来创建故障转储,我想知道是否有办法通过我的 Catch2 测试运行此工具以在发生崩溃时获取转储。关于如何做到这一点或使用其他工具的任何提示都会有所帮助,谢谢!达伦

0 投票
1 回答
280 浏览

c++ - Catch2 可以和 C 语言一起使用吗?

我正在编写一个支持与 C 和 C++ 语言应用程序接口的 dll。dll 本身是用 C++ 编写的,所以问题是我可以使用 Catch2 框架对 C 和 C++ 应用程序进行单元测试吗?

我需要注意什么?有没有人可以建议的替代方案?

0 投票
0 回答
152 浏览

c++ - 如何最好地让我的 catch2 CHECK() 输出更多关于它检查的信息?

我正在使用 catch2 编写一些带有单元测试的代码(出于某种原因,它将保持这种状态)。

现在,在一组单元测试中,有很多(成对)行看起来像这样:

因此,my_out_param使用单个函数调用进行设置,然后将其与 T 文字进行比较。

现在,当它运行并失败时,我得到:

但显然我没有得到“一些,参数,这里”。嗯,我需要它。否则,如果不阅读源代码,我真的不知道哪个测试失败了。

由于这里依赖于宏,我不能只包装CHECK()一个函数并在里面做一些花哨的事情。

当检查失败时,您会建议我做什么以使“some, params, here”与“some_literal”一起打印,同时:

  1. 保持我的测试源代码简洁。
  2. 不重复自己
  3. 仍然获得有效的文件和行号

?

注意:当前使用的 catch2 版本是 2.7.0,合并为一个标头。如果版本更改会有所帮助,那可能是可行的。

0 投票
0 回答
28 浏览

catch2 - catch2:如何在测试用例中执行另一个进程?

我正在尝试在 catch2 中实现一个测试用例,用于测试进程之间 fifo 的使用。为了测试它,我想运行另一个创建并写入fifo的进程,而我的测试(使用catch2)将从这个fifo中读取。有没有办法使用 catch2 运行进程,或者我只是使用常规系统 API 来执行另一个 exe 文件(进程)作为测试的一部分?

谢谢

0 投票
0 回答
91 浏览

c++ - 如何迭代 Catch2 中编译时参数的所有排列?

我有一个函数,我想用Catch2测试每个可能的输入。这个函数有多个编译时常量作为它的参数。为简单起见,假设我有两个枚举

和功能

我想用 和 的值的每个可能组合进行A测试B。如何在 Catch2 中实现这一点?我希望这是可能的,而不必列出所有可能的排列。

到目前为止我尝试过的

没有做到这一点,因为我希望它们成为编译时常量,即我需要constexpr A a = GENERATE(...)哪个不起作用。

使用TEMPLATE_TEST_CASE_SIG会起作用:

但这需要我列出 A 和 B 的每个可能排列,这对于任何大于 2*2 值的示例都是不可维护的。

最小的工作示例

https://godbolt.org/z/TzTG7PnW6

0 投票
1 回答
70 浏览

unit-testing - 如何让 catch2 打印比较的 C 风格字符串的内容?

我正在使用catch2(最新版本-截至目前为2.13.6),在我的测试用例中,我有一堆类似于以下内容的检查:

每个测试用例的文字都不同,显然my_str's 的内容也是如此。

当这样的检查失败时,我得到的输出如下:

但我没有my_str打印出来。让上面的内容也打印(部分)内容的最佳方法是my_str什么?

笔记:

  • 您可能不会假设my_str它是空终止的。
  • 代码必须相对简洁。
  • 我宁愿不将任何东西转换为std::string,但如果你必须这样做,我不排除它。
0 投票
1 回答
132 浏览

c++ - 在范围内找不到 C++ TEST_CASE

我正在尝试为我的大学编写 C++ 教程。我尝试了所有可能的方法,例如在 catch.hpp 文件中导入 Catch 库,但我总是收到 TEST_CASE not found in scope 的错误。有人能帮我一下吗?我真的需要让它工作。

这是我的代码,

这是错误的屏幕截图:

在此处输入图像描述

0 投票
1 回答
159 浏览

c++ - 如何使 catch2 不打印其烦人的标题?

我正在运行一些用 catch2 构建的单元测试。它的输出开始于:

好吧,我不想看到那个。-?当我们使用适当的参数运行单元测试并知道我们在做什么时,我和其他用户/维护者都不需要被提醒 catch2 版本或运行的能力。

但是 --?选项似乎没有告诉我如何禁用此消息。我可以吗?还是我必须手动“混蛋”catch2 标头?