问题标签 [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.
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 中组织我的项目,但我不知道如何。我不知道它应该如何工作。
感谢您的建议
c++ - catch 单元测试框架是否支持 junit 样式的测试报告?
计划切换到c++ 的 Catch 单元测试框架。
我需要测试结果采用 junit 报告格式,我只想确认它是否具有该功能。
boost-program-options - 我可以将 Catch 与 boost/program_options.hpp 一起使用吗?
我有一个使用 boost/program_options.hpp 来处理命令行参数的程序。我想在这个程序中添加单元测试,Catch框架非常有吸引力。但是,它似乎与我的程序的命令行参数混淆了。
如何使用 Catch 并且仍然让 boost/program_options.hpp 处理命令行参数?
如果 boost/program_options.hpp 正在处理我的程序的选项,我该如何配置 Catch?
c++ - Catch lib(单元测试)和 CTest(CMake)集成
我正在寻找 Catch CatchLib的成功示例与 CMake 测试 (Ctest) 集成的成功示例。据我了解,这是必须解析应用程序输出的附加 cmake 脚本?有人已经写过这个了吗?大概分享了这个?
====================================================
更新(已找到解决方案):
我已将cmake 脚本提交给 CatchLib ,以便将 Catch 与 CTest 集成。这是 Fraser99 的 cmake 脚本的简化版本
c++ - 捕获 Lib 问题 - 匿名命名空间重新定义。怎么解决
我正在使用 Catch Lib 进行单元测试
以前,我单独测试了一个标头,并且 TEST_CASEs 没有问题,但是在最终将所有这些包含到项目中之后,我遇到了很多这样的错误:
有人可以解释一下这是什么意思吗?
c++ - “Catch”单元测试框架 - REQUIRE_THROWS_AS
我开始使用“Catch”单元测试框架,到目前为止它真的很棒。我非常痛苦地使用了 VS 内置的单元测试框架。
我注意到的一件事是宏的REQUIRE_THROWS_AS
行为不像预期的那样
来自文档:
期望在计算表达式期间引发指定类型的异常。
当我尝试写作时
我预计测试会失败,但它说测试通过了。框架中有错误还是我错了?
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 文档并在线搜索,但找不到任何有关如何执行此操作的指示。
catch-unit-test - 使用 Catch 控制测试用例的组合爆炸
假设我有一个简单的类,它在其构造函数中接受 6 个布尔参数,并根据这些参数的状态执行一些计算。
如果我想使用 Catch 来充分测试所有案例,那么我需要 64 个单独的单元测试。
现在,假设在未来的某个时刻,我添加了第 7 个布尔参数。现在我必须编写的测试用例数量翻了一番,达到 128 个。
有没有一种方法可以制作我的单元测试,例如从单个测试规范自动“生成”所有 2^n 测试用例?
c++ - Catch 测试框架消耗所有内存
我的 test/ 文件夹有这些文件
根据Catch说明,该main.cpp
文件只有这个。
当我在其中一个测试中注释掉所有代码时,我可以将所有内容编译成一个大的可执行文件并且它可以工作。但是,如果我将代码保持原样 - 生成的可执行文件会消耗我机器上的所有内存并挂起。
我像这样编译测试:
以下是测试(不要介意实现它们的代码):
测试一:
测试二:
我错过了什么吗?
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