ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:170.23KB ,
资源ID:8873018      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8873018.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JUnit4使用入门指南.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

JUnit4使用入门指南.docx

1、JUnit4使用入门指南JUnit4使用入门指南*以下的内容以Eclipse上的JUnit为准现在的Eclipse中一般都自带了JUnit组件,包含两个版本:JUnit3和JUnit4,由于Junit4引入了java 5.0的注释技术,所以写起测试用例更方便,有些注解方法非常人性化。简单介绍一下JUnit4的特性:1. JUnit4引入了类范围的 setUp() 和tearDown() 方法。任何用 BeforeClass 注释的方法都将在该类中的测试方法运行之前刚好运行一次,而任何用AfterClass注释的方法都将在该类中的所有测试都运行之后刚好运行一次。2. 异常测试:异常测试是Juni

2、t4中的最大改进。Junit3的异常测试是在抛出异常的代码中放入try块,然后在try块的末尾加入一个fail()语句。例如除法方法测试一个被零除抛出一个ArithmeticException:该方法不仅难看,而且试图挑战代码覆盖工具,因为不管测试是否通过还是失败,总有一些代码不被执行。在JUni4中,可以编写抛出异常的代码,并使用注释来声明该异常是预期的:如果没有异常抛出或者抛出一个不同的异常,那么测试就将失败。3. JUnit4添加了两个比较数组的assert() 方法:public static void assertEquals(Object expected,Objectactual

3、)public static void assertEquals(String message, Objectexpected,Object actual)这两个方法以最直接的方式比较数组:如果数组长度相同,且每个对应的元素相同,则两个数组相等,否则不相等。数组为空的情况也作了考虑。4. JUnit 4引入了注解技术,下面列出常用的几个annotation 介绍a). Before:初始化方法,在任何一个测试执行之前必须执行的代码;b). After:释放资源,在任何测试执行之后需要进行的收尾工作;c). Test:测试方法,表明这是一个测试方法。对于方法的声明也有如下要求:名字可以随便取,没

4、有任何限制,但是返回值必须为void,而且不能有任何参数。如果违反这些规定,会在运行时抛出一个异常。至于方法内该写些什么,那就要看你需要测试些什么了;在这里可以测试期望异常和超时时间,如Test(timeout=100),我们给测试函数设定一个执行时间,超过了这个时间(100毫秒),它们就会被系统强行终止,并且系统还会向你汇报该函数结束的原因是因为超时,这样你就可以发现这些Bug了。d). Ignore:忽略的测试方法,标注的含义就是“某些方法尚未完成,暂不参与此次测试”;这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把Ignore标注删去,就可以进行正常

5、的测试。e). BeforeClass:针对所有测试,只执行一次,且必须为static void;f). AfterClass:针对所有测试,只执行一次,且必须为static void;g). RunWithSuite.SuiteClasses这两个注解一般合在一起用,作为TestSuite类的注解,例如:RunWith(Suite.class)Suite.SuiteClasses(MyTestCase.class,MyTestCase2.class)public class MyTestsSuite 创建一个空类作为测试套件的入口。使用注解 org.junit.runner.RunWith

6、和 org.junit.runners.Suite.SuiteClasses 修饰这个空类。将 org.junit.runners.Suite 作为参数传入注解 RunWith,以提示 JUnit 为此类使用套件运行器执行。将需要放入此测试套件的测试类组成数组作为注解 SuiteClasses 的参数,保证这个空类使用 public 修饰,而且存在公开的不带有任何参数的构造函数。一个Junit 4 的单元测试用例执行顺序为:BeforeClass Before Test After AfterClass;每一个测试方法的调用顺序为:Before Test After。下面我们简单创建一个基于E

7、clipse的JUnit4的测试用例,不用紧张,很简单的,比自己写public static void main(String args)还要轻松。1. 创建一个JavaProject工程,你自己写了一个计算类,计算类的内容如下:1. packagecom.horse;2. 3. importcom.horse.exp.CalculatorException;4. 5. publicclassMyCalculator6. 7. /*8. *两个整数相加,如果相加的值超过了整型的范围,抛出自定义的CalculatorException9. *paramx加数110. *paramy加数211.

8、*return相加结果12. */13. publicstaticintadd(intx,inty)14. if(x+y!=(long)x+(long)y)15. thrownewCalculatorException(计算结果超出Int值的范围);16. 17. returnx+y;18. 19. 20. /*21. *两个整数相减,如果相减的值超过了整型的范围,抛出自定义的CalculatorException22. *paramx被减数23. *paramy减数24. *return相减结果25. */26. publicstaticintsubtract(intx,inty)27. r

9、eturnx-y;28. 29. 30. /*31. *两个整数相乘,如果相乘的值超过了整型的范围,抛出自定义的CalculatorException32. *paramx被乘数33. *paramy乘数34. *return相乘结果35. */36. publicstaticintmultiply(intx,inty)37. returnx*y;38. 39. 40. /*41. *两个整数相除,如果除数等于0,抛出自定义的CalculatorException42. *paramx被除数43. *paramy除数44. *return相除结果45. */46. publicstaticin

10、tdivide(intx,inty)47. returnx/y;48. 49. 50. /*51. *两个整数相除取模,如果除数等于0,抛出自定义的CalculatorException52. *paramx被除数53. *paramy除数54. *return相除取模结果55. */56. publicstaticintmode(intx,inty)57. returnx%y;58. 59. 60. /*61. *计算表达式。*未实现62. *paramStringexpression数学公式表达式,例如:3*40/50-5*(9-1)+10+4-263. *returnint结果64. *

11、/65. publicstaticintcalcExpression(Stringexpression)66. return0;67. 68. 69. /*70. *计算阶乘。故意写错代码,写成了死循环71. *paramnum正整数72. *return阶乘结果73. */74. publicstaticintfactorial(intnum)75. for(inti=0;inum;)76. 77. 78. return0;79. 80. 2. 这时我们需要写一些测试方法来验证计算方法是否设计正确,然后在Java Build Path中把JUnit4添加到Libraries,如图3. 新建一

12、个测试类:MyTestCase,这只是一个普通的类,不需要继承任何类,也不需要写main方法,例如:view plain1. packagecom.horse;2. 3. importorg.junit.*;4. 5. importcom.horse.exp.CalculatorException;6. 7. importjunit.framework.Assert;8. 9. /*10. *定义一个JUnit4的测试用例,初步了解JUnit4的使用特性。11. *下面的例子中全部使用了注解的方式,具体每个注解的含义和使用方式请见下面的用例12. *author马涛2011-6-1313. *

13、/14. publicclassMyTestCase15. privatestaticinti=1;16. static17. System.out.println(MyTestCase被载入内存);18. 19. 20. publicMyTestCase()21. System.out.println(MyTestCase实例化,+this.hashCode();22. 23. 24. /*25. *BeforeClass的意思是该被注解的方法将在类被系统载入的时候执行,先于测试用例类构造方法和Before方法。26. *仅被执行一次,方法名不做限制。该注解在一个类中只可以出现一次,必须声明

14、为publicstatic27. *28. */29. BeforeClass30. publicstaticvoidsetUpBeforeClass()31. System.out.println(初始化测试类);32. 33. 34. 35. /*36. *AfterClass的意思是所有的测试方法被执行之后再执行,后于After方法执行。37. *仅被执行一次,方法名不做限制。该注解在一个类中只可以出现一次,必须声明为publicstatic38. *39. */40. AfterClass41. publicstaticvoidsetUpAfterClass()42. System.o

15、ut.println(销毁测试类);43. 44. 45. /*46. *Before的意思是测试用例类构造方法之后执行,在每个测试方法之前执行47. *方法名不做限制,在一个类中可以出现多次,执行顺序不确定,必须声明为public并且非static48. *49. */50. Before51. publicvoidsetUp()52. System.out.println(测试开始+i+,+this.hashCode();53. 54. 55. /*56. *After的意思是测试用例类构造方法之后执行,在每个测试方法之前执行57. *方法名不做限制,在一个类中可以出现多次,执行顺序不确定

16、,必须声明为public并且非static。58. *如果测试方法被忽略,即Ignore,或者测试方法运行过程中被强行关闭,如Test(timeout=xxxx),此时该方法不会被执行,其他情况下该方法都会被执行59. *60. */61. After62. publicvoidtearDown()63. System.out.println(测试结束+(i+);64. 65. 66. /*67. *测试是否抛出指定的异常68. *Test的意思是该方法是测试方法,启动测试后,系统会自动查找到该方法执行。69. *如果测试方法中正确的逻辑是:运行过程中会抛出一个异常(明确知道的异常),这时我们

17、可以使用注解表达式,请见示例。70. */71. Test(expected=CalculatorException.class)72. publicvoidtestAdd1()73. MyCalculator.add(Integer.MAX_VALUE,1);74. 75. 76. /*77. *测试是否抛出指定的异常78. */79. Test(expected=CalculatorException.class)80. publicvoidtestAdd2()81. MyCalculator.add(Integer.MIN_VALUE,-1);82. 83. 84. /*85. *测试计

18、算结果是否准确86. */87. Test88. publicvoidtestAdd3()89. Assert.assertEquals(MyCalculator.add(1,2),3);90. 91. 92. /*93. *Ignore:忽略的测试方法,标注的含义就是“某些方法尚未完成,暂不参与此次测试”;94. *这样的话测试结果就会提示你有几个测试被忽略,而不是失败。95. *一旦你完成了相应函数,只需要把Ignore标注删去,就可以进行正常的测试。96. *97. */98. Ignore(方法未实现)99. Test100. publicvoidtestCalc4()101. Ass

19、ert.assertEquals(MyCalculator.calcExpression(3*(4+5),27);102. 103. 104. /*105. *Test(timeout=1000),我们给测试函数设定一个执行时间,106. *超过了这个时间(1000毫秒),它们就会被系统强行终止,107. *并且系统还会向你汇报该函数结束的原因是因为超时,这样你就可以发现这些Bug了。108. *109. */110. Test(timeout=1000)111. publicvoidtestFactorial()112. Assert.assertEquals(MyCalculator.fa

20、ctorial(3),6);113. 114. 4. 现在我们可以直接运行了,测试结果,也会立马能展示出来:如果测试全部通过,进度条的颜色是绿色,如果有Error或Failure,进度条的颜色是红色,你可以通过标识看每个Error或Failure的具体的异常或错误信息。5. 如果我们写了很多像上面的测试类,如果我们一个个点击运行来进行测试,这样肯定会影响工作效率,这时我们需要利用JUnit的另一个概念:Suite,它是JUnit和Suite的容器。新建一个Suite类:MyTestsSuite,这只是一个普通的类,不需要继承任何类,也不需要写main方法,也不需要新建任何方法,例如:1. pa

21、ckagecom.horse;2. 3. importorg.junit.runner.*;4. importorg.junit.runners.Suite;5. 6. /*7. *8. *author马涛2011-6-139. *10. */11. RunWith(Suite.class)12. Suite.SuiteClasses(MyTestCase.class,MyTestCase2.class)13. publicclassMyTestsSuite14. 15. 同上面运行一样,也会出现你想要的结果,非常直观。到时候我们可以把所有的Suite和TestCase集合到一个Suite中,然后一把运行,如果出现了绿色进度条,恭喜你,你的代码和功能测试通过;如果出现了红色进度条,那你就只能乖乖的根据测试结果修改你的代码,直至测试出现绿色进度条。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1