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

c++ - Catch2 cmake 函数 'catch_discover_tests()' 在 bulid 时间不起作用

我使用 Catch2 进行单元测试。我想在构建后运行测试。
所以我在 Catch 中使用了 'cath_discover_test' 函数。
但在构建时,不要打印出任何关于测试的内容。
如下所示:

这是test.cmake文件源代码:

但是,我通过下面的 ctest 执行测试,测试工作。

构建后如何运行测试并显示测试结果的输出?

0 投票
1 回答
191 浏览

c++ - CATCH_CONFIG_MAIN 的 gtest 等价物是什么?

谷歌搜索后我找不到 gtest 的替代品

0 投票
1 回答
4610 浏览

c++ - 运行单元测试,不包括 Catch2 中的特定标签

我可以根据Catch2中的特定标签“不匹配”运行测试用例吗?

[NotWorking]在我完成实现该功能之前,我想调用不属于标记的测试用例。

0 投票
1 回答
309 浏览

c++ - 将 $(location) 传递给 Bazel --test_arg

问题

是否可以在为每个执行的测试重新评估的参数中$(location)传递bazel test一个通用参数?--test_args

语境

我想要做的是用于bazel test批量执行测试,但产生独特的输出文件。

我使用带有--out参数的 Catch2 来指定 JUnit XML 输出文件位置。我可以让 Catch2 将 JUnit 输出到STDOUT,但是 test.log 会受到 Bazel 和任何其他STDOUTSTDERRCatch2 产生的测试数据的污染。

例如。我正在尝试制作以下内容:

  • ./bazel-testlogs/
    • 文件夹
      • 测试
        • 测试1
          • Test1_JUNIT.xml
        • 测试2
          • Test2_JUNIT.xml
0 投票
2 回答
4501 浏览

c++ - 用 Catch2 编译多个测试源的正确方法是什么?

我有以下项目结构:

test_main.cc

测试1.cc

测试2.cc

test_utils.hpp

如果我使用类似的东西进行编译clang++ -std=c++17 test_main.cc test1.cc test2.cc,则该函数something_great在 test1.o 和 test2.o 中都定义了。这会导致错误,例如

在 Catch2 文档的Scaling Up部分中,他们提到为了拆分您的测试,您可能需要

根据测试需要使用尽可能多的附加 cpp 文件(或任何你称之为实现文件的文件),但分区对你的工作方式最有意义。每个附加文件只需要 #include "catch.hpp"

但是在文档的示例部分中,我没有看到像我这样的用例。我阅读了这篇博文,其中描述了三种对我不感兴趣的解决方案:将函数定义为宏,或将函数staticinline.

是否有另一种方法来编译这些文件,这些文件产生一个可执行文件,其主要功能由定义test_main.cc

0 投票
1 回答
1964 浏览

c++ - 如何使用 Catch2 测试我的 CMake 静态库项目?

我正在编写一个静态库,其中包含几个项目之间的一些共享代码。为了验证这个库中的代码是否正常运行,我想使用 Catch2 对其进行一些单元测试。

不幸的是,在尝试运行测试时,我遇到了编译的输出文件是共享库(.a)而不是可执行文件的问题。

我确信我可以创建一个单独的项目,它使用我的静态库中的函数,然后以这种方式运行测试,但理想情况下,我希望保持测试和构建配置尽可能接近。

所以我的问题是:设置我的项目以便我可以使用 Catch2 对我的静态库代码进行单元测试的最佳方法是什么?

这是我项目的 CMakeLists.txt 文件供参考:

0 投票
1 回答
701 浏览

c++ - 使用 Catch2 以全精度打印浮点值

我有一些使用的测试代码,它确实检查某些计算是否返回浮点空值。

问题是,当测试由于非常小的非空值(比如 1.234E-16)而失败时,这些值会以“默认”打印方式打印,我看到:

这几乎没用。我想看到的是:

我在测试前尝试了流式传输std::scientificstd::cout但显然使用另一种打印方法进行了 Catch。

任何想法 ?

旁注:实际上,我使用提供的Approx类,但这与我的问题无关

编辑:这里的问题在于比较本身(我知道关于浮点值的所有坏事),而在于如何告诉 Catch 打印处理后的值。

0 投票
0 回答
117 浏览

c++ - 我正在编写单元测试。如何修复 LNK1120 错误

我想在visual studio 2017上写最简单的单元测试。但是有一个错误-“致命错误LNK1120:未解决的外部元素:23”

0 投票
1 回答
66 浏览

c++ - 单元测试。如何在 main() 中运行测试

我正在尝试在 main 函数中运行测试,但显示错误“您无法重载 main () 函数”。

0 投票
1 回答
1826 浏览

c++ - catch2 单包含导致测试中出现“未定义的引用”

我已经看到很多具有相同问题的示例,但它们不适用于我的情况。

我有以下文件结构:

Proj/CMakeLists.txt

并在Proj/TestDir1/CMakeLists.txt

在哪里catch_test_runner.cpp

所有这些看起来都很好,似乎基本上是我为此找到的众多指南的复制/粘贴。但是,我收到以下问题:

所以,显然它能够链接到 catch.hpp,否则它就无法找到任何这些东西。很明显,我正在使用 catch 的 single_include 版本,这是我发现的所有关于同一问题的示例的问题。

我做错了什么?