首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C++单元测试框架

C++单元测试框架
EN

Stack Overflow用户
提问于 2008-09-17 21:21:32
回答 18查看 54.2K关注 0票数 61

我在我的C++代码中使用了Boost测试框架,但是它有两个问题,这两个问题可能对所有C++测试框架都是常见的:

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

有没有人知道更好的测试框架,或者我会永远羡慕Java/.NET开发人员可用的测试工具吗?

EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2008-09-18 13:56:26

我刚回复了一个very similar question。我最终使用了Noel Llopis的UnitTest++。我更喜欢它而不是boost::test,因为它不坚持使用宏实现测试工具的主程序-它可以插入到您创建的任何可执行文件中。它确实受到了boost::test的同样的阻碍,因为它需要一个链接库。我使用过CxxTest,它确实比C++领域中的其他任何东西都更接近于自动生成测试(尽管它需要Perl作为构建系统的一部分才能做到这一点)。C++只是没有提供.NET语言和Java所提供的反射钩子。Visual Studio Team System - Developer's Edition中的MsTest工具将自动生成非托管C++的测试存根,但是必须从DLL中导出方法才能做到这一点,因此它不能与静态库一起使用。.NET世界中的其他测试框架可能也具有此功能,但我对其中任何一个都不熟悉。因此,现在我们对非托管C++使用UnitTest++,而对于托管库,我正在决定是使用MsTest还是NUnit。

票数 20
EN

Stack Overflow用户

发布于 2010-12-28 11:38:25

我刚刚推出了我自己的框架,CATCH。它还在开发中,但我相信它已经超越了大多数其他框架。不同的人有不同的标准,但我试图在没有太多权衡的情况下涵盖大多数领域。请看一下我的链接博客条目,供品尝者参考。我最喜欢的五个特性是:

  • Header only
  • 将基于函数和方法的tests
  • Decomposes标准
  • 表达式自动注册到LHS和RHS中(因此,您不需要在基于函数的fixture中使用整个家族的assert 嵌套部分进行C++
    • 名称测试使用自然语言-函数/方法名称是

    生成的

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

它还具有Objective-C绑定。

更新

这是我几年前回答的问题。感谢所有精彩的评论!显然,Catch在那段时间里发展了很多。它现在支持BDD风格的测试(给定/当/然后),标签,现在在一个头中,以及加载内部改进和改进(例如,更丰富的命令行,清晰和富有表现力的输出等)。A more up-to-date blog post is here.

票数 67
EN

Stack Overflow用户

发布于 2008-09-18 02:59:27

看看谷歌C++测试框架。

谷歌在所有的内部C++项目中都使用了它,所以它一定很不错。

http://googletesting.blogspot.com/2008/07/announcing-new-google-c-testing.html

http://code.google.com/p/googletest

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/87794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档