Catch-为什么我们需要另一个C ++测试框架

概要

对于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的内容

你可能感兴趣的:(Catch-为什么我们需要另一个C ++测试框架)