我对我的 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/