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