概要
对于C++已经有相当数量的既定框架,包括(但不限于)CppUnit, Google Test, Boost.Test, Aeryn, Cute, Fructose and many, many more. 即使是Objective-C也有一些,比如:OCUnit - 现在已经集成到XCode中。
那么,Catch与这些测试框架有什么不同呢?
主要特征
- 极其容易上手,只要下载catch.hpp,包含该头文件,就可以了。
- 没有外部依赖。只要你可以编译C ++ 98并且有一个可用的C ++标准库。
- 只管编写测试用例即可,测试用例是自我注册的。
- 将测试用例分成几个部分,每个部分都是隔离运行的(不再需要测试套件!)
- 支持Given-When-Then样式的BDD(行为驱动开发)和传统的单元测试。
- 只有一个核心断言宏用于比较。使用标准C / C ++运算符进行比较,但表达式会被分解,并记录了lhs和rhs。
其他核心功能
- 测试用例可以使用任何字符串命名。
- 测试可以被标记为容易运行的特设测试组。
- 失败的测试可以(可选)在Windows和Mac上进入调试器。
- 输出到模块化的报告对象。包括基本的文本和XML报告。自定义报告也可以轻松添加。
- JUnit xml输出可与第三方工具(如CI服务器)集成。
- 在头文件中提供了一个默认的main()函数,但是您也可以完全接管控制权(例如集成到您自己的测试运行器GUI中)。
- 提供了命令行解析器,即使在您选择提供自己的main()函数的情况下,仍然可以使用它。
- Catch可以自我测试。
- 备用断言宏报告失败,但不中止测试用例
- 通过内建的富有表现力的Approx()来比较浮点数。
- 内部和辅助性的宏被隔离,不会有命名冲突
- 支持匹配(早期阶段)
Objective-C特定功能
- 自动检测您是否正在使用Objective-C项目
*无需任何配置,即可支持ARC和非ARC工程 - 使用Obj-C类实现测试夹具(如OCUnit)
- 额外内置的匹配器,也可与Obj-C类型协同工作(例如字符串匹配器)
还有谁在使用Catch?
使用Catch的开源工程列表
请参阅Catch使用指南,以便在实践中获得更多使用Catch的内容