首页 / 知识
C ++单元测试框架
2023-04-16 20:42:00

C++ unit testing framework我为我的C ++代码使用Boost Test框架,但是它有两个问题可能是所有C ++测试框架都常见的:
有谁知道更好的测试框架,还是我永远会嫉妒Java / .NET开发人员可用的测试工具?
我刚刚推出了自己的框架CATCH。它仍在开发中,但我相信它已经超越了大多数其他框架。
它不会生成存根-但这是一个相当专业的领域。我认为Isolator ++是第一个真正实现这一目标的工具。注意,模拟/存根框架通常独立于单元测试框架。 CATCH特别适合模拟对象,因为测试状态不会被上下文传递。 它还具有Objective-C绑定。 [更新]
几年前,我的答案刚刚发生。感谢您的宝贵意见! 看一下Google C ++测试框架。 Google已将其用于所有内部C ++项目,因此它必须非常好。 http://googletesting.blogspot.com/2008/07/announcing-new-google-c-testing.html http://code.google.com/p/googletest Boost.Test确实允许按名称运行测试用例。或测试套件。或其中几个。 Boost.Test并不坚持实现main,尽管这样做确实很容易。 Boost.Test不必用作库。它具有单个标头变体。 我只是回答了一个非常类似的问题。我最终使用了Noel Llopis的UnitTest ++。我比boost :: test更喜欢它,因为它不坚持使用宏来实现测试工具的主程序-它可以插入您创建的任何可执行文件中。它确实遭受了boost :: test的相同困扰,因为它需要链接一个库。我使用了CxxTest,它比自动生成测试的C ++领域中的其他任何工具都更紧密(尽管它需要Perl成为您的构建系统的一部分)。 C ++只是不提供.NET语言和Java的反射钩。 Visual Studio Team System-开发人员版中的MsTest工具将自动生成非托管C ++的测试存根,但是必须从DLL导出方法才能执行此操作,因此它不适用于静态库。 .NET世界中的其他测试框架也可能具有此功能,但我对其中的任何一个都不熟悉。因此,现在我们将UnitTest ++用于非托管C ++,而我目前正在为托管库选择MsTest和NUnit。 我是UnitTest ++的忠实拥护者,它非常轻巧,但是可以完成工作。您可以在那里轻松运行单个测试。 好问题!几年前,我一直在环顾四周,寻找值得使用的东西,但很快就出现了。我一直在寻找轻量级的东西,不需要我链接某些库...您知道我可以在几分钟内启动并运行它。 但是,我坚持并最终在cxxtest上运行。 从网站:
哇...超级简单!包含一个头文件,从Test类派生,您就可以运行。在过去的四年中,我们一直在使用此工具,但我仍然没有找到令我更满意的东西。 尝试使用WinUnit。听起来很棒,并由John Robbins推荐。 我喜欢Boost单元测试框架,主要是因为它非常轻巧。
Aeryn是另一个值得关注的框架 我正在使用tut-framework Visual Studio具有内置的单元测试框架,这是为win32控制台应用程序设置测试项目的好链接: http://codeketchup.blogspot.ie/2012/12/unit-test-for-unmanaged-c-in-visual.html 如果您在静态DLL项目上工作,则设置起来会容易得多,因为其他人指出了外部测试框架(如GTest和Boost)具有额外的功能。 http://groups.google.com/group/googletestframework,但这很新 CppUnit是对JUnit的最初敬意。 安德鲁·马洛(Andrew Marlow)的Fructose库值得一试... http://fructose.sourceforge.net/ 我回想起他写Fructose时,他的文档中包含对其他产品的相当详细的分析和比较,但是找不到直接指向该文档的URL。 我正在尝试Igloo,它也是仅标头的C ++测试套件,即使其中包含的两个依赖项也仅标头。 因此,这非常简单明了。除了github上包含的示例外,主站点igloo-testing.org上还有示例和更多详细信息。我将在以后获得更多有关它和其他框架的经验时进行更新。 我也喜欢UnitTest ++。 麻烦之处在于,源代码发行版包含近40个单独的文件。这是荒谬的。通过管理所有这些单元测试文件,可以为一个简单项目管理源代码控制和构建任务。 我已经修改了UnitTest ++,以便可以通过添加一个.h和.cpp文件将其与项目集成。我称之为"最可爱"。详细信息请参见http://ravenspoint.com/blog/index.php?entry=entry080704-063557 它不会自动按照原始问题的要求生成测试存根。我不禁想到这样一个功能将带来更多麻烦,而不是值得,因为它会生成大量无用的代码"测试"访问器函数。 Eclipse / JUnit是Java的可靠软件包,两者都有C ++扩展/等效项。它可以满足您的要求。当然,您必须更改IDE。 我可以想象,自动存根测试功能将更多地是所讨论的功能(框架脚本或开发环境的功能)。据说CodeGear的C ++ Builder应用程序将快速生成用于用户功能的测试代码。 |
最新内容
相关内容
linux运行图形界命令?
linux运行图形界命令?,系统,密码,地址,电脑,图形界面,地方,工具,界面,终端,图形,linux图形化界面命令第一种方式比较简单,只需要选择相应的带图linux怎样运行命令?
linux怎样运行命令?,系统,工作,信息,基础,地址,命令,目录,工具,密码,一致,Linux系统基础操作指令1、linux常用命令有pwd命令、cd命令、ls命令linux编译完运行命令?
linux编译完运行命令?,系统,代码,环境,工具,信息,命令,文件,程序,终端,编辑,在linux中编译C输入完程序后输入个:wq然后按什么键就然后就回到了linux命令程序运行?
linux命令程序运行?,状态,系统,服务,情况,命令,进程,软件,数据,发行,时间,Linux中如何启动进程?进程调度命令有哪些?实现调度启动进程的方法有linux运行多个命令?
linux运行多个命令?,环境,软件,系统,工作,服务,连续,命令,指令,分号,冲突,linux多个用户同时执行命令会冲突吗不会冲突。解释:用户登录linux的linux运行命令查看?
linux运行命令查看?,系统,信息,状态,命令,名称,情况,地址,软件,进程,第一,linux查看进程命令首先打开xshell软件,连接上linux服务器,使用指令pslinux中命令运行软件?
linux中命令运行软件?,软件,系统,名称,工具,电脑,位置,环境,中心,在线,初级,如何用命令行在Linux下安装软件?首先启动CentOS7,在VMware中点击上脚本linux上运行命令?
脚本linux上运行命令?,工具,代码,时间,密码,系统,环境,名字,位置,第三,下来,typescript脚本中怎样运行Linux命令?1、Script可用于记录当前用户linux运行命令的脚本?
linux运行命令的脚本?,系统,服务,工具,脚本,意外,技术,分析,文件,方法,命令,sh文件在linux下如何运行Linux下面运行 SH文件步骤如下:查看目录shlinux影藏运行命令?
linux影藏运行命令?,档案,电脑,标准,设备,代码,工具,系统,查询系统,暂停,命令,linux查询系统所有隐藏档案(不包括目录)的命令1、可以使用findlinux运行脚本时未找到命令?
linux运行脚本时未找到命令?,系统,信息,环境,软件,异常,官网,底部,电脑,平台,为什么说,linux无法找到脚本文件是什么意思?1、意思是:找不到执行linux运行脚本的命令?
linux运行脚本的命令?,系统,工具,代码,服务,脚本,状态,密码,环境,位置,暂停,linux下如何运行可执行文件1、file 文件名 可以查看文件类型:或者: