问题标签 [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 投票
1 回答
1332 浏览

c - 在 QT creator 中捕获单元测试 - main 的多个定义

我想使用 Catch 单元测试框架来测试我的项目。我阅读了如何编写测试的教程,它非常简单。我尝试在 QT creator 中创建非常简单的项目,其中包含以下文件:

主.cpp:

测试.cpp:

阶乘.cpp:

阶乘.h:

catch.hpp 是单元测试的 catch 框架

我用 C 而不是 C++ 编码,扩展名“.cpp”只是因为 catch,它不适用于扩展名为“.c”的文件

还有一个文件:testing.pro,其中包含

该文件由 QT 创建者生成。

好的,我的问题是,当我尝试构建这个项目时,我收到错误:“main 的多个定义”。

我得到它。我在main.cpp 文件和tests.cpp 中有main。但我不知道,我应该怎么做才能让它工作。我想要一个项目,它具有完全工作的 main 和带有测试的文件,我可以在其中测试我的功能。我几乎到处搜索。我想我必须以某种方式在 QT creator 中组织我的项目,但我不知道如何。我不知道它应该如何工作。

感谢您的建议

0 投票
2 回答
1172 浏览

c++ - catch 单元测试框架是否支持 junit 样式的测试报告?

计划切换到c++ 的 Catch 单元测试框架

我需要测试结果采用 junit 报告格式,我只想确认它是否具有该功能。

0 投票
1 回答
101 浏览

boost-program-options - 我可以将 Catch 与 boost/program_options.hpp 一起使用吗?

我有一个使用 boost/program_options.hpp 来处理命令行参数的程序。我想在这个程序中添加单元测试,Catch框架非常有吸引力。但是,它似乎与我的程序的命令行参数混淆了。

如何使用 Catch 并且仍然让 boost/program_options.hpp 处理命令行参数?

如果 boost/program_options.hpp 正在处理我的程序的选项,我该如何配置 Catch?

0 投票
2 回答
17136 浏览

c++ - Catch lib(单元测试)和 CTest(CMake)集成

我正在寻找 Catch CatchLib的成功示例与 CMake 测试 (Ctest) 集成的成功示例。据我了解,这是必须解析应用程序输出的附加 cmake 脚本?有人已经写过这个了吗?大概分享了这个?

====================================================

更新(已找到解决方案):

我已将cmake 脚本提交给 CatchLib ,以便将 Catch 与 CTest 集成。这是 Fraser99 的 cmake 脚本的简化版本

0 投票
1 回答
570 浏览

c++ - 捕获 Lib 问题 - 匿名命名空间重新定义。怎么解决

我正在使用 Catch Lib 进行单元测试

以前,我单独测试了一个标头,并且 TEST_CASEs 没有问题,但是在最终将所有这些包含到项目中之后,我遇到了很多这样的错误:

有人可以解释一下这是什么意思吗?

0 投票
1 回答
6648 浏览

c++ - “Catch”单元测试框架 - REQUIRE_THROWS_AS

我开始使用“Catch”单元测试框架,到目前为止它真的很棒。我非常痛苦地使用了 VS 内置的单元测试框架。

我注意到的一件事是宏的REQUIRE_THROWS_AS行为不像预期的那样

来自文档:

期望在计算表达式期间引发指定类型的异常。

当我尝试写作时

我预计测试会失败,但它说测试通过了。框架中有错误还是我错了?

0 投票
2 回答
4276 浏览

c++ - Catch.hpp 单元测试:如何动态创建测试用例?

我正在使用 CATCH v1.1 build 14 对我的 C++ 代码进行单元测试。

作为测试的一部分,我想检查我的代码中几个模块的输出。没有固定数量的模块;可以随时添加更多模块。但是,测试每个模块的代码是相同的。因此,我认为将测试代码放在for循环中是理想的。事实上,使用catch.hpp,我已经验证我可以在测试用例中动态创建部分,其中每个部分对应一个模块。我可以通过将SECTION宏包含在 for 循环中来做到这一点,例如:

(这不是一个完整的工作示例,但您明白了。)

这是我的困境。我想独立测试模块,这样如果一个模块失败,它将继续测试其他模块而不是中止测试。REQUIRE但是,CATCH 的工作方式是,如果单个测试用例失败,它将中止整个测试用例。出于这个原因,我想为每个模块创建一个单独的测试用例,而不仅仅是一个单独的部分。我尝试将for循环放在TEST_CASE宏之外,但是这段代码无法编译(如我所料):

通过编写我自己的 可能可以做到这一点main(),但我不知道如何准确地做到这一点。TEST_CASE(我会直接把我的代码放到main().TEST_CASE

我也可以使用CHECK宏而不是REQUIRE宏来避免在模块失败时中止测试用例,但是我遇到了相反的问题:它试图继续对早该失败的模块进行测试。如果我可以将每个模块放在自己的测试用例中,那应该会给我理想的行为。

有没有一种简单的方法可以在 CATCH 中动态创建测试用例?如果是这样,你能给我一个如何做的例子吗?我通读了 CATCH 文档并在线搜索,但找不到任何有关如何执行此操作的指示。

0 投票
1 回答
212 浏览

catch-unit-test - 使用 Catch 控制测试用例的组合爆炸

假设我有一个简单的类,它在其构造函数中接受 6 个布尔参数,并根据这些参数的状态执行一些计算。

如果我想使用 Catch 来充分测试所有案例,那么我需要 64 个单独的单元测试。

现在,假设在未来的某个时刻,我添加了第 7 个布尔参数。现在我必须编写的测试用例数量翻了一番,达到 128 个。

有没有一种方法可以制作我的单元测试,例如从单个测试规范自动“生成”所有 2^n 测试用例?

0 投票
0 回答
66 浏览

c++ - Catch 测试框架消耗所有内存

我的 test/ 文件夹有这些文件

根据Catch说明,该main.cpp文件只有这个。

当我在其中一个测试中注释掉所有代码时,我可以将所有内容编译成一个大的可执行文件并且它可以工作。但是,如果我将代码保持原样 - 生成的可执行文件会消耗我机器上的所有内存并挂起。

我像这样编译测试:

以下是测试(不要介意实现它们的代码):

测试一:

测试二:

我错过了什么吗?

0 投票
2 回答
1873 浏览

c++ - Catch 测试框架问题:不能使用 Catch::Session()

我在编写一些测试的 C++ 文件中收到此错误:

查看 catch.hpp 单个头文件,我注意到应该实现 Session() 成员函数的代码是灰色的,可能是因为我找不到某处的 #ifdef。

是否有任何宏可以设置为使用 Session 类?

捕获版本:1.5.3 和 1.5.6。

参考:https ://github.com/philsquared/Catch/blob/master/docs/own-main.md