JUnit 4快速入门.docVIP

  • 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

文档评论(0)

1亿VIP精品文档

相关文档