问题标签 [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 回答
136 浏览

c++ - kill syscommand 在 Catch2 测试用例中产生失败

我正在使用Catch2在 C++ 中进行测试。我的测试用例派生了一个子进程,并且在某些时候父进程向它发送一个kill(pid, SIGTERM)以清理它。

但是,我从 Catch2 收到以下错误。

当然,我是故意进行这个系统调用的,所以我不认为它是测试失败。如何让 Catch2 忽略此故障条件?

谢谢!

0 投票
2 回答
1804 浏览

visual-studio - 如何通过 CLI 中的 CMake/CTest/Catch2 运行使用 VisualStudio 构建的测试?

我试图一次学习几件事(可以说是我的第一个问题......),即:使用 Catch2 进行单元测试和使用 CMake 进行构建。

在我的调查过程中,CTest 作为一种在 CMake 中管理测试的预烘焙方式出现在雷达上,并且似乎“支持”Catch2。

虽然事情似乎进展顺利,但我无法像我希望的那样自动运行我的测试。

具体来说,我有一个源代码树,它在某些时候包含我正在测试的库,我希望能够坐在树的顶部并执行某种“运行我的测试”命令(理想情况下将它们作为完整构建的一部分运行,但那是另一天)。

L:\scratch\shared\testeroolib\CMakeLists.txt所以这是我感兴趣的库的CMakeLists.txt 文件 ( ):

如果我做天真的事情并从我运行 cmake 的同一位置运行 ctest,我会得到:

或者

根据我在其他地方读到的内容,make test可以与 GCC 和朋友一起使用,但我使用的是 VS。

所以在这里,建议似乎是我应该使用构建目标,ALL_TESTS但这对我没有用。

当然,我可以运行测试:

我希望我做了一些小麻烦,但我很有可能在这里完全搞错了!

0 投票
1 回答
1774 浏览

c++ - Catch2 单元测试未与 CMake 项目一起运行

我有一个项目结构如下:

顶级 CMakeLists.txt 内容是:

“core”文件夹中的 CMakeLists.txt 文件为:

我的test.cpp内容(来自 Catch2 文档,此测试应该失败):

当我使用 生成 Visual Studio 文件cmake -G "Visual Studio 15" . -B .\build时,通常在发现测试时,我会看到一个名为“RUN_TESTS”的项目分组在“CMakePredefinedTargets”下。但是,我再也看不到这个项目了。

此外,当我构建项目(使用 Visual Studio 2017)时,测试没有运行。请帮忙。谢谢。

0 投票
4 回答
1036 浏览

c++ - 是否可以使用 Catch2 测试 MPI 代码?

我正在使用相当大的 MPI 代码。我开始将单元测试包含到现有的代码库中。但是,一旦被测单元使用 MPI 例程,测试可执行文件就会崩溃,并显示错误消息“之前调用 MPI 例程MPI_Init

  • 最好的解决方法是什么?
  • 我可以运行具有多个 MPI 等级的测试吗?
0 投票
2 回答
866 浏览

catch2 - 每个测试用例的执行时间

我有大量用 C++ 编写的测试用例。整个测试用例都有时间限制。由于大量测试用例在测试过程中发生超时。我想知道每个测试用例的花费时间,以便我可以对这些特定的测试用例进行一些重构以获得更好的运行时间。不幸的是,我在 Catch2 框架中找不到合适的解决方案。如果您有任何想法或解决方案,我想知道

0 投票
1 回答
1358 浏览

c++ - 使用 cmake 获取外部依赖

我正在用 c++ 编写一个没有外部依赖项的小型库,除了测试我想在哪里使用catch2。所以我宁愿不包含该项目,并认为我可以在需要时使用 cmake 下载它,但到目前为止,看起来 cmake 仅在我执行 makefile 时下载

这是有问题的,因为 CMakeList 文件的其余部分依赖于它已经被下载,因此它可以利用 catch2 提供的 cmake 函数;没有它,构建失败。

我的以下方法看起来像这样

./CMakeList.txt:

./examples/CMakeList.txt:

./test/CMakeList.txt:

具有以下项目结构

现在这根本行不通,因为我仍然误解了多个cmakefile之间的变量范围,但是将这一切放在一个CmakeList中仍然不会让add_subdirectory发现Catch2。

我的另一个想法是将它作为一个 git 子模块包含在内,如果这将允许 cmake 在执行 makefile 之前下载 catch2。

所以总的来说,我想让我的 gitrepo 尽可能小,并且只在需要时获取依赖项。

0 投票
1 回答
1441 浏览

c++ - 如何使用介子在 C++ 中执行代码覆盖?

我在我的 C++ 项目中使用介子和忍者作为构建系统,并且我已经将 catch2 配置为测试框架。我想知道如何使用我编写的测试执行代码覆盖。我读了这个页面,https://mesonbuild.com/Unit-tests.html但对我来说似乎很不清楚,有人可以帮忙吗?

0 投票
1 回答
167 浏览

c++11 - 获取 CATCH_SINGLE_INCLUDE: command not found 错误,当我在 Catch2 中编译 010-TestCase.cpp 文件时

我在编译 catch2 示例中的 010-TestCase.cpp 文件时遇到此错误。我对这个框架很陌生。如果有人对此有意见,请回复。猫

0 投票
1 回答
6453 浏览

unit-testing - 在 Visual Studio 中使用 Catch2 进行单元测试的最佳实践

我是 C++ 单元测试的新手,想就此获得一些建议。我使用 Visual Studio 2019 进行开发,我选择了 Catch2 作为我的测试库,我还安装了 Catch2 的测试适配器。

我在 GitHub 上阅读了 Catch2 和 Catch2 测试适配器的文档,但我仍然无法找到在 Visual Studio 中使用单元测试的正确方法。

假设我已经有一个项目,其中包含一些类,并且我想测试这些类。我应该将带有测试代码的文件放在同一个项目中,还是应该在解决方案中创建新的测试项目?

当我尝试第一种方法时,除非我注释掉项目的 main() 函数,否则测试资源管理器不会发现测试。使用第二种方法,尽管我为头文件设置了正确的相对路径并从测试项目中引用了主项目,但我得到了一堆未解决的类方法的外部符号错误:

如果有人向我展示在 VS 中使用 Catch2 进行单元测试的正确方法,我将不胜感激。

0 投票
1 回答
1844 浏览

c++ - 如何获取 CMake 单元测试的相对路径?

我有一个用 CMake 构建的项目,它使用 Catch2 进行单元测试。一些单元测试练习代码从这样的文件中加载数据:

问题是如何正确获取 的值TEST_CWD

目录结构很简单(不是一成不变的):

留空TEST_CWD有时会起作用,但在通过 IDE 运行测试时会中断。使用绝对路径设置环境变量也可以,但会在其他机器上中断。同样,强制所有用户手动设置环境变量对用户不友好。

在 CMake 项目中指定相对文件路径的好方法是什么?