GoogleTest vs CppUnit:事实

在为未来几年设置C ++unit testing框架的过程中,我们将GoogleTestCppUnit列入了名单。 我有两个经验,我的重点是GoogleTest。 无论如何说服我的老板,我需要一些事实,所以我做了一些在互联网上阅读,包括手册,维基页面和一些来源。 我想出了一个GoogleTest优势列表和一个CppUnit优势(graphicstesting运行者)。 在这里,他们按照感知的有用性sorting:

  • INSTANTIATE_TEST_CASE_P用任何你想要的参数来实例化一个testing用例,包括笛卡尔积
  • FRIEND_TESTtesting私人类成员(所有的遗留代码)
  • 把断言变成断点
  • 非致命的断言
  • “开箱即用”googlemock整合
  • 自动testing检测,不需要枚举它们
  • testing可以被禁用和启用
  • 可以使用名称模式来select要运行的testing
  • 值/types参数化testing
  • 用户定义的谓词断言
  • 死亡testing
  • 断言更为丰富
  • 键入断言
  • 断言子程序
  • 可以使用<<将更多的debugging信息添加到断言
  • RecordProperty将最后一个属性值发送到XML输出
  • SCOPED_TRACE有助于理解来自子例程或循环内部的断言失败的上下文。
  • xUnit XML输出,可以由Jenkins马上显示,而不需要XSLT转换
  • 支持自定义types打印机
  • testing指示消耗的时间(我怀疑CppUnit也可以这样做,但我还没有想到)
  • testing事件监听器API(用户定义的插件)
  • testing洗牌
  • 没有例外和RTTI

我是否正确地认为CppUnit不支持上述所有内容? CppUnit中有没有有用的GoogleTestfunction?

最后但并非最不重要的一点是:GoogleTest有什么好的CppUnitfunction?

谢谢!

如果您使用旧版本的gcc编译器,或者如果您的代码在testing下运行在vxWorks(或VxSim)上,那么cppUnit的机会可能会高于Googletest框架。

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

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

不知道这是否支持cppUnit,但这可能会非常方便,特别是对于遗留系统。

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

如果你还没有看过xUnit ++ ,那么我特意写了,因为我对可用的版本(包括gtest)感到不满。 大多数的列表是支持的,如果不是,如果它是一个“必须”的function,我可能会愿意添加它。

这些是我看到的好处。 有几个GUItesting运行者:

  1. https://github.com/ospector/gtest-gbar
  2. https://github.com/SandyChapman/gtest-runner-qt

我已经使用了第一个,它工作得很好,虽然它在开发中,需要一些工作。 不知道是否有其他select。