常见单元测试工具介绍

1.       C/C++语言开发的首选利器- C++Test

 

         以前在windows平台下的开发,使用的框架主要是MFC,以及console工程(基于win32SDK),属于纯C/C++开发的范畴。

         因此,使用的单元测试工具,主要有C++TestCppUnit两种,其中又以前者为主。因为具有直接导入VC工程,以及自动生成测试集合、用例的优点,还是相当好用的。不过这个软件也有缺点,就是修改测试用例时,基本上不能引入被测代码中的符号。举个例子,除了测试用例中已经生成的全局变量赋值语句,用户如果想设定其他全局变量,或者定义一些指针类型-为了访问某些全局数组空间,最终会发现,该测试用例无法运行。

         显然,这一缺点,可以通过CppUnit中的手工编写测试用例来解决。当然,缺点就是没法自动生成测试用例了;你得一个一个的自己编写。

         除过上面讲到的缺点,C++Test是一个非常优秀的软件,对于纯C语言开发者,是非常便利和强大的。特别是对于嵌入式开发者,使用该软件进行单元测试,能够极大地提高软件质量,避免target调试费时费力的缺点。

         当然,前提条件是,将嵌入式系统的代码,成功移植到Visual C++环境(使用VC编译器替代原来的gcc或者arm定制编译器)。需要注意的是,只要求编译通过,不要求连接通过-链接需要的函数可以由C++Test自动生成。

         在移植过程中,会遇到以下一些问题,这里给出笔者的简单解决方法。

1)   汇编语言部分  如果能看懂,可以尝试转换为C代码,否则屏蔽。

2)   特殊的函数标记或编译器伪指令(pragma系统),直接屏蔽。

3)   不要忘记把原编译器中的预定义宏迁移到VC工程中。最常见的是,一些标识CPU选项和debug等级的预定义宏。

笔者就曾经将一个code warrior开发环境下的arm工程,迁移到VC2005中,最终使用C++Test完成了单元测试。有图为证。

 常见单元测试工具介绍

    笔者的这个工程,大约包含几百个源文件。如果使用手工生成测试用例的方法,需要大量的测试人员和人力才能完成;并且还难于管理测试用例。使用C++Test之后,减轻了不少工作量。

其实,该软件还有一个优点-提供测试覆盖率统计和图示。相信这一点,也是单元测试的最终目标-百分之百覆盖,所非常有利的工具了。

 

 

2.       .Net环境单元测试的首选利器- Nunit

 

目前windows平台下的最流行开发环境,非属.Net开发环境莫属。基于该环境,微软提供了ManagedC++/VB/C#等开发语言,吸引了不少粉丝。当然,微软的东西,都是集成在Visual Studio中的,连带着也产生了单元测试工具-不过只在team版本中才有。

不过经过比较,笔者还是推荐Nunit。首先这个软件是免费的,其次很强大,应用起来也很方便。只要仿照自带的例子,编写相应的测试类就行了-当然,必须引入“NUnit.Framework”包。

下图是个简单的例子,取材于该软件的samples.

常见单元测试工具介绍

 

完成工程的解释和链接后,可以通过Nunit,定位到该工程生成的“dll”文件进行测试。

 

 常见单元测试工具介绍

3.       Java环境单元测试的终极利器- Junit

 

从事Android开发之后,因为eclipse的缘故,选择了Junit作为测试工具。其实,parasoft公司的J++Test也是不错的选择;不过Android开发包内置支持Junit,显然更加值得推荐。

下面引用一个android开发包中的例子,进行简单的说明。这个例子,读者可以在“android\android-sdk-windows\samples\android-8\ApiDemos\tests”中找到。这个例子代表的工程,就是一个用于android平台应用程序(JAVA代码)单元测试的Junit测试工程。

 

 常见单元测试工具介绍

与上一节中提到的测试源文件编写类似,需要引入android.test.ActivityInstrumentationTestCase2包,才能引入测试驱动并且成功连接到测试驱动入口。当然,可供使用的测试用例原型有很多,不止这一个类型;比较常用的还有“android.test.AndroidTestCase”。

         实际测试时,可以选定任意的android终端进行。在这个实例中,笔者选定的是android模拟器。测试完成后,eclipseJunit面板,会显示测试用例的执行结果;可惜的是,仍然没有覆盖率统计。

         常见单元测试工具介绍

 

4.       其他常用语言的单元测试工具

除了上文提到的几种开发语言和平台,在日常编程活动中,可能会遇到的还有perl,tcl,pythonOO语言。

一般来说,这些语言有着庞大的第三方package支持。因此,一般来说,类似于android平台内置支持Junit框架,这些语言也有相应的支持。举个例子,perl支持包列表,自从perl语言创世以来,perl testing这个模块就支持全面的测试。感兴趣的读者,可以阅读一下这方面的书籍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win10系统的服务器在哪里设置密码,window10怎么设置密码

window10怎么设置密码Windows 10 系统中可以用自己喜欢的图片结合手势来设置登陆密码,很酷很有个性,如何操作呢?1、从开始菜单中打开“设置”应用(也可以通过其他的方式打开“设置”应用;从通知中心打开;从搜索框中搜索…

Linux 启动优化实战-2.41 秒启动应用!

系统启动是一个大问题,前段时间有同学也问了我这个问题,不仅仅是Linux,Android 下面的启动优化也可以借助bootchar来分析。下面正文是老吴的实操过程。哦,对了,上篇文章有同学问文章的封面,这里贴出来&…

腾达fh307没有显示服务器名,腾达(Tenda)FH307路由器上网设置 | 192路由网

本文介绍了腾达(Tenda)FH307路由器的安装、上网设置方法,同时分别介绍了“ADSL(PPPOE)拨号”、“动态IP”、“静态IP”三种上网方式的区别,以及在腾达(Tenda)FH307路由器上的详细设置。腾达(Tenda)FH307无线路由器一台新购买的腾达FH307路由器实现上网&a…

记得重用layout

2019独角兽企业重金招聘Python工程师标准>>> 这样的布局&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" android:layout_width"…

sql2000-2 4/19

SQL2000客戶的上次問題後來H盤自動毀掉了昨天換了顆新硬碟,當資料庫挂上之後,H一直又提示錯誤,後來還是將資料庫路徑設為I傍晚時分親眼目睹了H所有資料被自動刪除的過程,待服務器重新啟動後H無法存取萬幸的是早一步將資料庫路徑作了更動在還原資料庫的過程中用克隆的BAK還原一直…

五一加班

前几年五一放假&#xff0c;我们会去小云家&#xff0c;五一也是荔枝成熟的时候&#xff0c;有一年吃上刚从树上摘的荔枝&#xff0c;现在还能记起那种味道&#xff0c;也是那次之后&#xff0c;想奢入简很难了&#xff0c;荔枝也一定要吃新鲜的了。今年一直还没看到荔枝的影子…

win10系统能做域服务器吗,Win10 LTSC 加入 Windows Server 2019 域服务器

前面的文章已经创建了域服务器、创建了域组织单位、用户组、用户&#xff0c;下面是如何把一台 Win10 LTSC 系统的电脑加入到Windows Server 2019 域服务器&#xff1b;0x01 加域准备修改计算机名、修改IP地址DNS指向 Windows Server 2019 域控制器&#xff1b;注意&#xff1a…

离职就打低绩效,这样对吗?

应该不止听见一个人说过&#xff0c;担心离职遇到各种不爽的事情&#xff0c;比如卡你的离职时间&#xff0c;比如让你背很低的绩效&#xff0c;比如你今年的年终奖就没有了&#xff0c;再比如&#xff0c;你和原来玩得好的同事突然就没话说了。我记得很清楚的事情是&#xff0…

+ 网页制作效果常用代码

控制横向和纵向滚动条的显隐&#xff1f;<body style"overflow-y:hidden"> 去掉x轴<body style"overflow-x:hidden"> 去掉y轴<body scroll"no">不显表格变色<TD οnmοuseοver"this.style.backgroundColor#FFFFFF&qu…

PID算法原理介绍

先来彻底搞懂PID到底是啥&#xff1f;PID&#xff0c;就是“比例&#xff08;proportional&#xff09;、积分&#xff08;integral&#xff09;、微分&#xff08;differential&#xff09;”&#xff0c;是一种很常见的控制算法。在工程实际中&#xff0c;应用最为广泛的调节…

打败opencv ,哦,是快了3倍

大家好&#xff0c;本文转自我一个读者朋友Homio的文章&#xff0c;推荐给大家&#xff0c;希望对做这方便的同学有所帮助。程序员&#xff0c;哦&#xff01;不&#xff01;软件工程师们都对opencv很熟悉&#xff0c;它在工作学习研究中起到了不可或缺的作用。但是它臃肿的身躯…

数据库中使用自增量字段与Guid字段作主键的性能对比(补充篇)-----转

我在发表过“据库中使用自增量字段与Guid字段主键的性能对比”这篇文章后&#xff0c;得到博客园各园友的很多评价&#xff0c;大家对我的测试方法也提出一些改进的方法。让我吃惊的是一园友提出&#xff1a;把guid和id的测试顺序颠倒一下&#xff0c;看下结果。今天就再测试一…

DEVC++出新版本了

昨天发了一篇文章C语言能判断一个变量是int还是float吗&#xff1f;然后有同学问我在Windows下是怎么写C代码的我是没有安装包的&#xff0c;只不过这个同学关系跟我不错&#xff0c;所以我就去找了下安装包&#xff0c;不找不知道&#xff0c;找了才发现&#xff0c;原来这个更…

小鹏汽车面试经验分享

大家周一好&#xff0c;这篇文章转自我的朋友李纳克斯&#xff0c;在做工作的同事&#xff0c;去面试也能增长自己的技术面和技术深度。推荐给大家&#xff0c;希望对大家有所帮助。某个下午&#xff0c;小鹏汽车的HR在招聘软件上撩我&#xff0c;于是我决定去聊聊看。接触下来…

(Bezier)贝塞尔曲在路径规划的运用,机器运动控制常用

前言之前被安排了活&#xff0c;一个局部区域机器运动控制的工作&#xff0c;大致是一个机器位于一个极限区域时候&#xff0c;机器要进入一个特殊的机制&#xff0c;使得机器可以安全的走出来。其中用到了bezier曲线进行优化路径&#xff0c;今天写一下&#xff0c;正好也给大…

当然可以不努力

我刚开始觉得他说的不对&#xff0c;现在越看越觉得他说的有道理。我们这一代人&#xff0c;太容易被别人影响&#xff0c;小的时候&#xff0c;觉得要赶上别人家的孩子&#xff0c;所以就努力读书&#xff0c;努力干家务。长大了一些&#xff0c;要用功的工作&#xff0c;用功…

遇到问题了 .net项目发布到iis6,没有权限访问!?

系统环境&#xff1a;windows2003 sp1 iis6 .net 2 framework已经允许了asp.net 2.0的支持在vs2005中把自己的web项目发布到iis6中的虚拟目录&#xff0c; 可是无法访问呀您无权查看该网页 您可能没有权限用您提供的凭据查看此目录或网页。 如果您确信能够查看该目录或网页&am…

嵌入式界的顶流开源项目,RetroPie 是怎么设计的?

RetroPie 是啥&#xff1f;一个用于将树梅派等板子转变为游戏机的开源项目。树梅派上运行 RetroPieGithub:https://github.com/RetroPie/RetroPie-Setup第一感觉&#xff0c;基于 Shell&#xff0c;有啥牛逼的。但仔细想想&#xff0c;一个简单的项目能获得 9.4K 的 Star&#…

java线程池,信号量使用demo

直接上代码 package org.jimmy.threadtest20181121;import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit;public class TestThread20181128 {public Semaphore semaphore new Semaphore(2, true)…

Spring JDBC最佳实践(2)

2019独角兽企业重金招聘Python工程师标准>>> 使用DataSourceUtils进行Connection的管理 由上节代码可知&#xff0c;JdbcTemplate在获取Connection的时候&#xff0c;并不是直接调用DataSource的getConnection(),而是调用了如下的代码&#xff1a; Connection con …