问题标签 [catch-unit-test]

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 投票
3 回答
156 浏览

c++ - 从 Rcpp Catch 测试中访问 `inst/extdata` 的数据

我正在尝试inst/extdata从 Rcpp Catch2 测试访问文件上的数据文件。文件树如下所示:

我相信,这与您从使用 devtools 的新包骨架中获得的内容相似。现在,我可以data-sample像这样轻松地从 testthat 测试中访问这个文件:

并根据需要使用它。我知道此时这使用了已安装包中的全局路径,但是我找不到将这个值传递给我的 c++ 测试的方法。我目前正在使用硬编码路径,但这显然只适用于我的机器。

这是我目前正在使用的:

由于这是一个读取文件的函数,我真的无法以任何方式嵌入它,但我仍然想知道:如何将 R 数据传递给 Rcpp/Catch 测试?

提前致谢!

0 投票
1 回答
35 浏览

c++ - 有没有办法用 catch 框架来比较流或文件?

我在升压测试工具中看到了宏:

它可以通过使用 ifstream_iterator 来处理流。

Catch 框架是否提供了一种比较流/文件的方法?

0 投票
1 回答
2343 浏览

c++ - 包含 Bazel http_file 下载的文件

我正在使用Bazel来构建我的项目。我想使用单头测试框架Catch v2。我决定使用http_file规则让 Bazel 下载 catch 标头。我的WORKSPACE文件如下所示:

根据文档,测试取决于生成的包,如下所示:

测试文件my_test.cc再简单不过了:

但是,我收到以下错误:

创建cc_library包装器或包含catch/catch.hppcatch/file/catch.hpp 会产生相同的错误。

0 投票
1 回答
338 浏览

c++ - boost crc 每次产生不同的输出

背景

我正在尝试使用 boost crc lib 计算给定字节数组的 CRC-16/CRC2。

注意:我充其量是 C++ 开发的初学者

我使用 catch2 作为我的测试框架。这是测试的代码:

问题

每次我运行测试计算的 CRC 都是不同的。

第一次运行:

第二次运行:

第 N 次运行:

问题

我的代码有问题吗?

为什么相同输入的 CRC16 不同?

如何可靠地计算给定字节数组的 CRC16?

0 投票
1 回答
335 浏览

c++ - CMake 标头仅依赖项

我在使用 CMake 使用 catch2 运行简单测试时遇到了一些问题。因为 catch 只是头文件,所以我觉得它很容易放入任何项目中,所以我想我会像普通头文件一样包含它。

项目结构:

CMakeLists.txt:

测试仪.cpp:

输出:

显然测试应该通过,但它没有。由于我是 CMake 和 catch2 领域的初学者,我很难确定问题所在。我可以肯定地说的catch.hpp是找到并且没有链接器错误,它只是返回一些错误代码。

我环顾四周,发现了这个:

在 catch 测试用例中实现时找不到库中的 CMake Header

但它没有答案,反正作者似乎也没有同样的问题。

这就是我构建和运行测试的方式(位于构建目录中):

任何帮助都值得赞赏:)

0 投票
1 回答
52 浏览

c++ - 确定当前 SECTION 的名称

我们使用 Catch 作为测试框架,对其可用性非常满意。

我计划为一个新的图表小部件实施一系列简单的单元测试。图表小部件只能通过简单的图像比较来正确测试。

为此,我需要将小部件的当前图像与之前存档的参考图像进行比较。现在,我需要为每个测试部分发明一个文件名,这很麻烦,应该自动完成。

可以将 a 中的电流导出SECTIONTEST_CASE字符串吗?

以下示例说明了我想要实现的目标:

现在,uniqueName充其量应该包含类似的东西A.B.C,但是如果在扩展测试后它保持不变,那么独特的东西也足够了。

0 投票
1 回答
466 浏览

c++ - 标记为未涵盖的类定义

我在 Qt 中为个人(开源)项目设置了 Codecov。该项目仍然主要是一个存根(几乎没有几个类,到目前为止我试图实现 100% 的覆盖率。但是,查看 Codecov 报告中这两个类的标题,一个被视为已覆盖,另一个是不是,即使它们都有单元测试并且它们都通过了。

属性覆盖失败

角色覆盖通行证

我在 Catch2 中测试了它们:

遵循 DRY 原则,我不会粘贴测试代码character::character;)

起初我using character::attribute在属性测试中使用了一个指令,所以我删除了它以查看命名空间是否引起了麻烦。另外,我符合括号模型attributeto match character,都无济于事。

这不是一个关键问题,但我很好奇可能导致这种行为的原因以及是否/如何修复它。另外,我想知道我是否应该从覆盖检查中完全切断 headers 文件夹,但我认为这不是一个好习惯。

洞察力?

编辑查看 Travis 上的 Codecov 输出,我发现attribute.h. 第一个显示以下信息:

而其他两个事件显示以下内容:

因此,我怀疑唯一考虑的实例是最后一个实例,它显示 0% 的执行,而不是character.h仅在日志中出现一次。

0 投票
1 回答
1117 浏览

c++ - 每次都赶上测试框架长链接时间

我目前正在尝试使用 Catch 测试框架。我正在使用 cmake 来构建我的项目,目前我只是将所有 .h 和 .c 文件放在一起。出于测试目的,我取出了我的实际“主要”并将其替换为 Catch 的样本阶乘示例。我有两个文件:

现在发生的事情是它花费 3 秒构建和 1 分钟链接。在所有链接(1+分钟)之后,我得到了测试结果。我遵循以下两个教程,其中提到将这两个文件分开。

我阅读了 Catch 教程: https ://github.com/catchorg/Catch2/blob/master/docs/tutorial.md

“慢编译”维基页面: https ://github.com/catchorg/Catch2/blob/master/docs/slow-compiles.md

我不太确定为什么链接需要这么长时间。有没有人遇到过这样的问题?

更新:

有关我的环境的更多信息:

  • cmake 3.14.0-rc1

  • g++ 8.1.0

0 投票
1 回答
2615 浏览

c++ - 如何使我的 cmake 目标用于 catch2 测试和项目运行更可扩展和更合理?

经过大量的努力和研究,我设法制作了多个 cmake 目标,以将运行我的程序与运行代码测试分开。但我不喜欢我所做的,因为我看到CMakeList.txt文件中有冗余。

目前我必须将每个新的源文件添加到两个目标,以便源目标可以使用该文件构建,并且测试目标可以构建,因为他们需要测试该文件。我不能将整个源目标扔到测试目标中,因为测试目标将包含两个主文件。

我对如何修复冗余的唯一想法是将源目标中的所有文件没有main.cpp文件放入某个组,然后将该组附加到两个目标。这样,源目标仅包含main.cpp文件和源文件组,而测试目标包含其所有测试和源文件组。所以文件组基本上是两个目标之间的所有重叠。我只是不知道该怎么做。

研究

这是我发现的其他堆栈溢出问题,它们帮助我到达了现在的位置:

代码

这是我用来试验 catch2 和 cmake 的测试项目,目前它适用于构建目标“tests”和“catch2Test”:

/include/catch2/catch.hpp是 catch2 的库头文件

/src/myMath/包含阶乘实现的头文件和代码文件,与catch2 教程中使用的相同。这也是阶乘测试实现的来源。

/src/main.cpp是一个简单的主文件,其中包含 factorial.h 以进行阶乘数学,然后将其打印到 cout。

以下是实际重要的其余文件的显式代码:

/test/test_main.cpp

/test/test_factorial.cpp

/CmakeLists.txt

/test/CMakeLists.txt

/src/CMakeLists.txt

跑步

当我运行 catch2Test 目标时,我得到了想要的结果:

当我运行测试目标时,我也得到了想要的结果:

一切正常,我只是不喜欢我目前的解决方案。

如何使我的目标更容易扩展?

另外,附带问题:包含头库的更合适的方法是什么?我认为它应该add_executable()像我在...中所做的/test/CMakeLists.txt那样../include/catch2/catch.hpp

0 投票
2 回答
4753 浏览

c++ - Catch2 - output to console and file

I can run a Catch executable with -o junit --output catch_results.xml to generate an xml report.

Is there some way to both generate an xml report, and also have the console output?