GoogleTest 与 CppUnit: 事实

在为未来几年设置 C + + 单元测试框架的过程中,我们筛选出了 谷歌测试CppUnit。我在这两方面都有一些经验,我非常喜欢 GoogleTest。总之,为了说服我的老板,我需要一些 事实,所以我在互联网上阅读了一些资料,包括手册,维基页面和一些资源。我列出了 GoogleTest 的优势和一个单独的 CppUnit 优势(图形化测试运行器)。在这里,它们是按照 感知的有用性排序的:

  • INSTANTIATE _ TEST _ CASE _ P 用您想要的任何一组参数实例化一个测试用例,包括笛卡尔产品
  • FRIEND _ TEST 用于测试私有类成员(用于所有遗留代码)
  • 将断言转换为断点
  • 非致命性断言
  • “开箱即用”的 Googlemock 集成
  • 自动测试检测,不需要枚举它们
  • 可以禁用和启用测试
  • 可以使用名称模式选择要运行的测试
  • 值/类型参数化测试
  • 用户定义谓词断言
  • 死亡测试
  • 更丰富的资产组合
  • 类型断言
  • 在子程序上断言
  • 额外的调试信息可以使用 < < 添加到断言中
  • RecordProperty 将属性的最后一个值发送给 XML 输出
  • SCOPED _ TRACE 有助于理解来自子例程或循环内部的断言失败的上下文。
  • 可以由 Jenkins 立即显示 xUnitXML 输出,而不需要在其间进行 XSLT 转换
  • 支持自定义类型的打印机
  • 测试指示所消耗的时间(我怀疑 CppUnit 也可以做到这一点,但我还没有搞清楚)
  • 测试事件侦听器 API (用户定义的插件)
  • 测试洗牌
  • 没有例外和 RTTI

我假设 CppUnit 不支持以上所有内容是正确的吗?在 CppUnit 中我是否缺少一个有用的 GoogleTest 特性 没空

最后也是最重要的一点: GoogleTest缺乏有没有什么好的 CppUnit 特性?

谢谢!

32029 次浏览

如果您使用较老版本的 gcc 编译器,或者测试中的代码在 vxWorks (或 VxSim)上运行,那么使用 cppUnit 的机会可能比使用 Googletest 框架的机会更大。

另一方面,Googletest 框架的另一个特性是可以使用3种不同的设置/拆卸级别:

  • 每个程序
  • 每个测试用例(或测试组)
  • 每个测试实例

不确定 cppUnit 是否支持这一点,但是这可能非常方便,特别是在遗留系统中。

此外,还有一个用于 Eclipse CDT 的 googletest 插件。

这些就是我所看到的好处: 有几个 GUI 测试运行者:

  1. Https://github.com/ospector/gtest-gbar
  2. Https://github.com/sandychapman/gtest-runner-qt

我已经使用了第一个,它的工作相当不错,虽然它的开发和需要一些工作。不知道还有没有其他选择。

如果你还没有看过 XUnit + + ,我特意做了它,因为我对现有的东西(包括 gtest)感到不满意。您的列表中的大部分都是支持的,如果不支持,如果它是一个“必须拥有”的特性,我可能愿意添加它。