GoogleTest vs CppUnit:事实
在为未来几年设置C ++unit testing框架的过程中,我们将GoogleTest和CppUnit列入了名单。 我有两个经验,我的重点是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运行者:
我已经使用了第一个,它工作得很好,虽然它在开发中,需要一些工作。 不知道是否有其他select。