[原][译]我们为什么需要另一个c++测试框架?Catch||Why do we need yet another C++ test framework?

时间:2023-12-17 13:24:44

翻译问题来源:https://github.com/catchorg/Catch2/blob/master/docs/why-catch.md

其他辅助博文:从Google Test 转到 Catch

Why do we need yet another C++ test framework?

好问题。 对于C ++,有很多已建立的框架,包括(但不限于),Google Test,Boost.Test,CppUnit,Cute,很多甚至更多。

那么Catch给派对带来了什么呢?

主要特点

快速且非常容易上手。 只需下载catch.hpp,#include它就可以了。
没有外部依赖。 只要您可以编译C ++ 11并且可以使用C ++标准库。
将测试用例写为自注册函数(或方法,如果您愿意)。
将测试用例分成几个部分,每个部分都是隔离运行的(不需要固定装置)。
使用BDD样式的Given-When-Then部分以及传统的单元测试用例。
只有一个核心断言宏用于比较。 标准C / C ++运算符用于比较 - 但是完整表达式被分解并记录lhs和rhs值。
测试使用*格式字符串命名 - 不再使用合法标识符中的连接名称。

其他核心功能

可以标记测试以便轻松运行特定的测试组。
失败可以(可选)进入Windows和Mac上的调试器。
输出是通过模块化报告对象。 包括基本的文本和XML记者。 可以轻松添加自定义记者。
支持JUnit xml输出与第三方工具(如CI服务器)集成。
提供了默认的main()函数,但您可以提供自己的完整控件(例如集成到您自己的测试运行器GUI中)。
提供了命令行解析器,如果您选择提供自己的main()函数,仍然可以使用它。
Catch可以测试自己。
备用断言宏报告失败但不中止测试用例
浮点容差比较使用富有表现力的约()语法构建。
内部和友好的宏是隔离的,因此可以管理名称冲突
匹配器

这是使用catch的开源库列表

这是catch的教程