使用JUnit实施单元测试

使用JUnit实施单元测试

ID:44305864

大小:238.13 KB

页数:33页

时间:2019-10-20

使用JUnit实施单元测试_第1页
使用JUnit实施单元测试_第2页
使用JUnit实施单元测试_第3页
使用JUnit实施单元测试_第4页
使用JUnit实施单元测试_第5页
资源描述:

《使用JUnit实施单元测试》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、测试的概念长期以来,我所接触的软件开发人员很少有人能在开发的过程中进行测试工作。大部分的项H都是在最终验收的时候编写测试文档。有些项H甚至没有测试文档。现在情况有了改变。我们一直提倡UML、RUP、软件工程、CMM,的只有一个,提高软件编写的质量。举一个极端的例子:如果你是一个超级程序设计师,一个传奇般的人物。(你可以一边喝咖啡,一边听着音乐,同时编写这操作系统中关于进程调度的模块,而月.两天时间内就完成了!)我真得承认,有这样的人。(那个编写UNIX屮的vi编辑器的家伙就是这种人。)然而非常遗憾的是这些神仙们并没有留下

2、如何修成止果的READMEo所以我们这些凡人一一在同一时间只能将注意力集中到若干点(据科学统计,我并不太相信,一般的人只能同时考虑最多7个左右的问题,高手可以达到12个左右),而不能既纵览全局乂了解细节一一只能期望于其他的方式来保证我们所编写的软件质量。为了说明我们这些凡人是如何的笨。有一个聪明人提出了软件爛(softwareentropy)的概念:一个程序从设计很好的状态开始,随着新的功能不断地加入,稈序逐渐地失去了原有的结构,最终变成了一团乱麻。你可能会争辩,在这个例子屮,设计很好的状态实际上并不好,如果好的话,就不

3、会发生你所说的情况。是的,看来你变聪明了,可惜你还应该注意到两个问题:1)我们不能指望在恐龙纪元(大概是十年前)设计的结构到了现在也能适用吧。2)拥有签字权的客户代表町不理会加入一个新功能是否会对软件的结构有什么影响,即便有影响也是程序设计人员盂要考虑的问题。如果你拒绝加入这个你认为致命的新功能,那么你很可能就失去了你的住房贷款和面包(对中国工程师来说也许是米饭或面条,要看你是南方人还是北方人)。另外,需要说明的是我看过的一些讲解测试的书都没有我写的这么有人情味(不好意思...)O我希望看到这片文章的兄弟姐妹能很容易地接

4、受测试的概念,并付诸实施。所以有些地方写的有些夸张,欢迎对测试有深入理解的兄弟姐妹能体察民情,并不吝赐教。好了,我们现在言归正传。要测试,就要明门测试的冃的。我认为测试的目的很简单也极具吸引力:写出高质量的软件并解决软件爛这一问题。想象一下,如果你写的软件和RichardStallman(GNU、FSF的头儿)写的一样有水准的话,是不是很有成就感?如果你一致保持这种高水准,我保证你的薪水也会有所变动。测试也分类,白箱测试、黑箱测试、单元测试、集成测试、功能测试・・・。我们先不管冇多少分类,如何分类。先看那些对我们冇用的分

5、类,关于其他的测试,有兴趣的人可参阅其他资料。白箱测试是指在知道被测试的软件如何(How)完成功能和完成什么样(What)的功能的条件下所作的测试。一般是由开发人员完成。因为开发人员最了解自己编写的软件。本文也是以白箱测试为主。黑箱测试则是指在知道被测试的软件完成什么样(What)的功能的条件下所作的测试。一般是由测试人员完成。黑箱测试不是我们的重点。本文主耍集中在单元测试上,单元测试是一种白箱测试。目的是验证一个或若干个类是否按所设计的那样正常工作。集成测试则是验证所有的类是否能互相配合,协同完成特泄的任务,日前我们暂

6、不关心它。下面我所提到的测试,除非特别说明,一般都是指单元测试。需要强调的是:测试是一个持续的过程。也就是说测试贯穿与开发的整个过程中,单元测试尤其适合于迭代增量式(iterativeandincremental)的开发过程。MartinFowler(有点儿像引用孔夫子的话)甚至认为:“在你不知道如何测试代码Z前,就不应该编写程序。而一旦你完成了程序,测试代码也应该完成。除非测试成功,你不能认为你编写出了可以工作的程序。”我并不指望所有的开发人员都能有如此高的觉悟,这种层次也不是一蹴而就的。但我们一旦了解测试的口的和好处

7、,自然会坚持在开发过程中引入测试。因为我们是测试新手,我们也不理会那些复杂的测试原理,先说一说最简单的:测试就是比较预期的结果是否与实际执行的结果一致。如果一致则通过,否则失败。看下面的例子:Java代码打印01・//将要被测试的类02.publicclassCar{03.publicintgetWheels(){04.return4;05.}06.}07.08.//执行测试的类09.publicclasstestCar{10.publicstaticvoidmeiin(String[]args){11.testCarm

8、yTest=newtestCar();12.myTest.testGetWheels();13.}14.14.publictestGetWheels(){15.intexpectedWheels=4;10.CarmyCar二Car();18.if(expectedWheels==myCar.getWheels())1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。