GoogleTest vs CppUnit: The facts

GoogleTest vs CppUnit: The facts

本文关键字:The facts CppUnit vs GoogleTest      更新时间:2023-10-16

在为未来几年设置我们的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我失踪?

最后但并非最不重要的是:是否有任何好的CppUnit功能,GoogleTest 缺乏?

谢谢!

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

另一方面,googletest框架的另一个特点是提供3个不同级别的设置/拆除:

    <
  • /程序/gh>
  • 每个测试用例(或测试组)
  • 每个测试实例

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

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

如果您还没有看过xUnit++,那么我特意写了它,因为我对可用的内容(包括gtest)不满意。大多数列表都是支持的,如果不支持,如果它是"必须拥有"的。

这些是我看到的好处。有几个GUI测试运行器:

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

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

相关文章: