在为未来几年设置 C++ 单元测试框架的过程中,我们将GoogleTest和CppUnit列入了候选名单。我对这两者都有一些经验,我最喜欢的是 GoogleTest。无论如何,为了说服我的老板,我需要一些事实,所以我在 Internet 上进行了一些阅读,包括手册、wiki 页面和一些资源。我提出了一份 GoogleTest 优势列表和一个 CppUnit 优势(图形测试运行器)。在这里,它们按感知有用性排序:
- INSTANTIATE_TEST_CASE_P 使用您想要的任何参数集实例化测试用例,包括笛卡尔积
- FRIEND_TEST 用于测试私有类成员(适用于所有遗留代码)
- 将断言变成断点
- 非致命断言
- “开箱即用” googlemock 集成
- 自动测试检测,无需枚举
- 可以禁用和启用测试
- 可以使用名称模式选择要运行的测试
- 值/类型参数化测试
- 用户定义的谓词断言
- 死亡测试
- 更丰富的断言集
- 类型断言
- 断言子程序
- 可以使用 << 将额外的调试信息添加到断言中
- RecordProperty 将属性的最后一个值发送到 XML 输出
- SCOPED_TRACE 有助于理解来自子例程或循环内部的断言失败的上下文。
- xUnit XML 输出,可以由 Jenkins 立即显示,而无需在两者之间进行 XSLT 转换
- 支持自定义类型打印机
- 测试指示所消耗的时间(我怀疑这也可以使用 CppUnit,但我还没有弄清楚)
- 测试事件监听 API(用户自定义插件)
- 测试改组
- 没有例外和 RTTI
我是否正确假设 CppUnit 不支持以上所有内容?我缺少的 CppUnit 中 是否有一个有用的 GoogleTest 功能不可用?
最后但并非最不重要的一点是:GoogleTest 是否缺少任何不错的 CppUnit 功能?
谢谢!