- 4
- 0
- 约5.17千字
- 约 7页
- 2019-02-21 发布于江苏
- 举报
JUnit?4快速入门
JUnit 4是JUnit框架有史以来的最大改进,其主要目标便是利用Java 5的Annotation特性简化测试用例的编写。让我们看看如何使用JUnit 4来进行Unit测试。
请注意:本文主要介绍JUnit 4的最新特性和用法,并不会讲解Unit测试的基础。如果你对JUnit框架还不熟悉,请先参考“在 HYPERLINK /blog/article.jspx?articleId=f766ee011312dbcb8e004c \t _blank Eclipse中使用JUnit”一文,学习如何编写JUnit测试。
我们使用的开发环境是Eclipse 3.2,它已经自带了JUnit 4.1,你需要将JUnit 4 Library添加到项目用到的Library中。另外,必须使用JDK 5.0或更高版本。
要在Eclipse环境之外运行JUnit,需要下载JUnit 4.1,具体请访问 HYPERLINK / \o \t _blank JU。
我们先看一个简单的Math类:
package?com.javaeedev.junit4;public?class?Math?{????public?int?abs(int?value)?{????????return?value=0???value?:?(-value);????}????public?int?div(int?a,?int?b)?{????????return?a?/?b;????}????/**?????*?BUG:?if?b?less?than?0!?????*/????public?float?exp(int?a,?int?b)?{????????float?r?=?1;????????for(int?i=0;?ib;?i++)????????????r?=?r?*?a;????????return?r;????}}
注意exp()方法是有Bug的,如果传入参数2, -1,则期待的返回值应为0.5F,但实际返回值为1.0F。
下面我们看看传统的JUnit的TestCase:
public?class?MathTest?extends?TestCase?{????public?void?setUp()?{?super.setUp();?}????public?void?tearDown()?{?super.tearDown();?}????public?void?testAbs()?{?assertTrue(true);?}????public?void?testDiv()?{...}????public?void?testExp()?{...}}
JUnit依赖反射来执行每个以test开头的方法。然而,在最新的JUnit 4中,由于有了Annotation的支持,我们的测试方法不需要再以testXxx标识了,而是写上一个@Test标注即可。例如:
@Test?public?void?doAbs()?{...}
甚至MathTest类也不必继承自TestCase。你也许会想到,不继承自TestCase就无法调用assertXxx方法了,正因为如此,所有的assertXxx方法全部以静态方法被放入了Assert类,使用Assert.assertXxx()调用。如果使用
import?static?org.junit.Assert.*;
则原有的代码不必改动。
setUp()和tearDown()方法也依赖@Before和@After标记,这样做的最大的好处是在继承体系内不必担心忘记了在setUp()方法中调用父类的super.setUp()方法,JUnit框架会自动处理父类的@Before和@After标记的方法。
并且,JUnit框架对@Before和@After的调用顺序类似于类的构造方法和析构方法,即@Before按照父类到子类的顺序调用,@After则相反,这样保证了资源的正确获取和释放。
当然,不再强迫必须使用setUp和tearDown作为方法名,可以使用更有意义的方法名,例如:initDatabase()和closeDatabase(),只要它们被标注了@Before和@After即可。
来看看使用Annotation的MathTest:
package?com.javaeedev.junit4;import?static?org.junit.Assert.*;import?org.junit.*;public?class?MathTest?{????public?MathTest()?{????????System.out.println
您可能关注的文档
最近下载
- 枣庄市台儿庄区2025届公费医学毕业生定岗笔试参考题库附答案解析.docx VIP
- 高中英语2025届高考热点人工智能与科技伦理主题作文核心词汇解读.doc VIP
- 2026中考数学压轴题每日一题(120题)答案.pdf VIP
- 2025年03月山东临沂市公费医学生考试选聘笔试历年专业考点(难、易错点)附带答案详解 .doc
- 基于PLC技术的数据中心冷源自控系统设计与应用.pdf VIP
- 时间在哪里认识时间 课件 人教版数学二年级下册.pptx VIP
- 2024年浙江事业单位427统考《综合应用能力》模考大赛(第二季).docx VIP
- 永川年产 200 万把陶瓷水果刀生产线设计.docx VIP
- 2024年07月山东省公费医学生(定向淄博)统一选岗2人笔试历年专业考点(难、易错点荟萃)附带答案详解 .doc
- 常见氧疗方式及其选择ppt课件-----精品课件下载.ppt VIP
原创力文档

文档评论(0)