【发布时间】:2011-12-16 20:41:22
【问题描述】:
在为未来几年设置 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 功能?
谢谢!
【问题讨论】:
-
Comparison of c++ unit test frameworks 的一些答案专门针对 GoogleTest 功能。
-
几年前我在做一个类似的调查,当时还没有 GoogleTest。我选择了 CXXTest,它有一种机制,可以通过 Perl 的预解析步骤来枚举测试用例。这大大优于 CppTest。也就是说,我对 GoogleTest 一无所知。
-
图形测试运行器有优势吗?通常,您想要一些可以轻松自动化的东西,因为自动化意味着您可以更轻松、更频繁地获得测试反馈。
标签: c++ unit-testing tdd googletest cppunit