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

c++ - xcode 从源代码中删除奇怪的控制字符

**更新

我试图了解 XCode 如何/为什么似乎在我的 C++ 源代码中添加了一个奇怪的字符,而实际上它正在删除它我正在创建一个简单的类并在学习 C++ 课程时使用 CATCH2 测试框架。我有一个将数字转换为单词的 numwords 类。

它失败了:

然后我通过仔细地将预期值复制/粘贴回我的测试中发现确实存在一些不可见的差异。就在那时,它开始神奇地过去了。我查看了我的 git diff 并看到了这个:

这个奇怪的控制字符只显示在差异中,并且只有在我尝试在失败后从差异或控制台复制/粘贴文本之后。添加特殊字符会导致测试通过。如果我在键盘上手动键入值“四十七”,特殊字符就会消失并且它FAILS。世界上到底发生了什么?这个 ^P 隐藏字符是什么?

numword.cpp 的来源如下:

我刚刚做了一些研究,发现 ^P 是一个数据链接转义码 (DLE)。我仍然不确定如何键入它。我的 numword.cpp 逻辑如何添加它?我哪里错了?

0 投票
1 回答
539 浏览

c++ - 如何在多个 Catch2 测试用例中检查相同的条件

我必须检查几个测试用例中的某些条件(例如初始状态)。我不能CHECK在函数中使用,如果可能的话,我想替换当前的宏。

0 投票
1 回答
256 浏览

cmake - 如何将 CTest 与 Node js 命令一起使用,用于测试使用 emscripten 从 C++ 编译的 JS 文件,并使用 Catch2?

我正在尝试使用Catch2库进行测试并编译它emscripten并运行测试。我的项目的目录结构是这样的

当我移动到build目录并运行node try-test.js时,它成功了。但是当我跑步时ctest,它失败了。下面是输出消息。

我在这里错过了什么吗?

这是我的test/main.cpp

这里是 CMakeLists.txt

如果您能提供任何帮助,我将不胜感激。

0 投票
1 回答
1032 浏览

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

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

如果我运行它,一切都会按预期工作,我得到:

显然,测试用例运行了两次,每个部分运行一次。

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

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

0 投票
5 回答
496 浏览

c - 将 char* 分配给 char

所以我对 C 很陌生,而且我刚刚开始使用指针。我正在使用二维数组将一组字符串从十六进制逐个字母转换为十进制。但是,在此过程中,我必须获取每个字符串的第一个字符,为此我试图将它们分配给一个字符。这条线特别给我带来了麻烦。

它一直说我无法从 const char* 转换为 char,但无论我如何更改它,我似乎都无法让它工作。

这是完整的程序:

任何帮助,将不胜感激!

0 投票
1 回答
304 浏览

catch2 - Catch2 UnorderedEquals 正确用法

我是 Catch2 的新手,对 UnorderedEquals 矢量匹配器有一个问题。这是代码:

此测试在带有 MinGW 的 Clion IDE 下通过。测试代码出了什么问题?那么 UnorderedEquals 的用法是什么?谢谢。 测试结果快照

0 投票
0 回答
623 浏览

c++ - c++/catch2:来自单独测试目录的参考代码

在尝试进行任何单元测试之前,我有一个目录

然后我会make运行生成的可执行文件;这个可执行文件是在根目录中生成的(调用它runme)。

现在我正在尝试使用 Catch2 https://github.com/catchorg/Catch2/blob/master/docs/Readme.md#top)它还说有一个带有 main 的测试文件(他们有一个定义它)。所以我将我的代码重组为

我做了一些不参考我的实际代码的虚拟测试。现在我做了make tester./tester它运行了所有的测试。我可以做make./runme运行我的原始应用程序。

我现在的问题是,我实际上如何从测试代码中调用我的源代码?我需要将此src目录转换为库吗?也就是说,测试代码如何引用 c++ 中的 src 代码对我来说有点不清楚。

为了全面披露,我来自 python/pytest 世界,想知道您如何实际构建 c++ 代码 wrt 单元测试或正确的项目结构。

0 投票
3 回答
824 浏览

c++ - 如何在 Bazel 项目中设置 Catch2

我已经开始了一个简单的 C++ 项目,它使用 Bazel 作为构建系统,并希望将 Catch2 添加到它,作为测试框架。

这是我的项目到目前为止的样子:

BUILD 就在哪里

我希望能够为每个创建测试cc_library,在这种情况下为Money. 我尝试设置它,但对 Catch2 main 感到困惑。任何关于如何做到最好的建议都值得赞赏!

0 投票
0 回答
275 浏览

c++ - CMake - “架构 x86_64 的未定义符号”使用glad/GLFW/Catch2

所以,我有一个 CMakeLists 项目,树如下:

我尝试使用 Catch2 lib 在测试 root make 项目中进行单元测试。但是当我尝试构建我的 unit_test proj 时,会出现以下错误:

项目 CMakeLists:

单元测试 CMakeLists:

我做错了什么?我包括 GLFW 并且很高兴这样:

如果我只构建我的项目而没有单元测试所有工作和构建。编译器 Clang 10.0

0 投票
1 回答
3262 浏览

c++ - 如何将 Catch2 作为外部库与 CMake 集成?

我正在尝试使用 Catch2 建立一个学习项目,我决定最好将存储库克隆到 Cpp 文件夹中,这样我就可以获得更新并将其用于其他 C++ 项目。安装方法如here所述。

基本的文件夹结构是:

根据Catch2 文档,我将其放在我的 CMake 文件中:

但是,当我尝试在 VS Code 中配置项目时,我收到以下错误消息:

main.cpp只是一个 Hello World 文件,完整的 CMakeLists.txt 文件内容为:

我不确定为什么会这样。我是 CMake 的新手,除了在工作中必须使用的非常基本的命令。我想像预期的那样将它作为头文件删除会减少工作量,但这种方法对我来说更有意义......

注意:我已经阅读了这个 SO question。然而,他的问题与 Catch2 作为项目内的头文件有关。

注意 2:期望的行为是使用 Catch2 作为外部库来构建项目。

(附加信息:CMake --version 为 3.13.3,在 VS Code 中使用 CMakeTools,OS 为 Windows 10)