C++ 单元测试框架

标签 c++ unit-testing

我对我的 C++ 代码使用了 Boost Test 框架,但它有两个问题可能是所有 C++ 测试框架共有的:

  • 无法创建自动测试 stub (例如,通过从选定的类中提取公共(public)函数)。
  • 您不能运行单个测试 - 您必须运行整个“套件”测试(我猜除非您创建了许多不同的测试项目)。

有谁知道更好的测试框架,还是我永远嫉妒 Java/.NET 开发人员可用的测试工具?

最佳答案

我刚刚推送了自己的框架,CATCH ,在外面。它仍在开发中,但我相信它已经超越了大多数其他框架。 不同的人有不同的标准,但我试图在没有太多权衡的情况下涵盖大部分内容。 请查看我的链接博客条目以供品酒师使用。我的前五个功能是:

  • 仅标题
  • 自动注册基于函数和方法的测试
  • 将标准 C++ 表达式分解为 LHS 和 RHS(因此您不需要一整套断言宏)。
  • 支持基于函数的夹具中的嵌套部分
  • 使用自然语言命名测试 - 生成函数/方法名称

生成 stub - 但这是一个相当专业的领域。我认为 Isolator++是第一个真正实现这一目标的工具。请注意,模拟/ stub 框架通常独立于单元测试框架。 CATCH 特别适用于模拟对象,因为测试状态不会通过上下文传递。

它还具有 Objective-C 绑定(bind)。

[更新]

几年前我的这个答案刚刚发生。感谢所有伟大的评论! 显然,Catch 在那段时间里发展了很多。它现在支持 BDD 样式测试(given/when/then)、标签,现在在 single 标题中,以及大量内部改进和改进(例如,更丰富的命令行、清晰和富有表现力的输出等) . A more up-to-date blog post is here.

关于C++ 单元测试框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/87794/

相关文章:

c++ - .cpp 文件中的 Objective C 语法?

json - 为 karma 单元测试获取 json 文件

unit-testing - 为什么我的EventAggregator订阅不处理此事件?

c++ - 未初始化的字符

c++ - 将 vector 限制在最小值和最大值?

c++ - Const 正确性——Const 指针作为函数参数

javascript - Mocha React Native 路由器编译错误

java - 是否建议为程序中的每个类编写一个测试用例?

java - 如何在 JMockit 中初始化独立的模拟实例

c++ - SFINAE 检测 CTAD 演绎指南的明确性