GoogleTest与CppUnit:事实

Est*_*ius 63 c++ tdd unit-testing cppunit googletest

在为接下来的几年设置我们的C++单元测试框架的过程中,我们将GoogleTestCppUnit列入了候选名单.我对两者都有一些经验,而我的偏好是GoogleTest.无论如何要说服我的老板我需要一些事实,所以我在互联网上做了一些阅读,包括手册,维基页面和一些来源.我想出了一个GoogleTest优势列表和一个CppUnit优势(图形测试跑步者).在这里,他们按照感知有用性排序:

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

假设CppUnit不支持以上所有内容,我是否正确?是否有一个有用的GoogleTest功能在CppUnit中不可用我缺少?

最后但同样重要的是:GoogleTest 缺少哪些优秀的CppUnit功能?

谢谢!

rat*_*kok 7

如果您使用旧版本的gcc编译器,或者如果您的测试代码在vxWorks(或VxSim)上运行,那么使用cppUnit可能比使用Googletest框架更有可能.

另一方面,googletest框架的另一个功能是提供3种不同级别的设置/拆卸:

  • 每个节目
  • 每个测试用例(或测试组)
  • 每个测试实例

不确定cppUnit是否支持此功能,但这可能非常方便,特别是对于旧系统.

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


mos*_*ald 6

如果您还没有看过xUnit++,那么我专门制作它是因为我对可用的内容(包括 gtest)不满意。您的大部分列表都受支持,如果不支持,如果它是“必备”功能,我可能愿意添加它。