之前在做.net项目的时候,如果需要测试,可以建立一个单元测试项目:
在java中也一样,进行单元测试的时候,可以用JUnit进行测试。
下面用一个超级简单的小例子,来一起学习一下如何使用JUnit进行单元测试。
#1、引入jar包
在使用JUnit之前,要先引入Junit的jar包
#2、被测试的方法:
假如UserManager类中的三个方法需要被测试,这里列举出UserManager类中需要被测试的三个方法:
public class UserManager { public void add(String username) { System.out.println("add----"+username); } public void del(String username) { System.out.println("del----"+username); } public String findUserById(String userId){ return "Danny"; } }
#3、编写单元测试类
建立用来测试UserManager中方法的测试类UserManagerTest.java:
import junit.framework.TestCase; public class UserManagerTest extends TestCase { public void testAdd() { UserManager usermanager = new UserManager(); usermanager.add("Danny"); } public void testDel() { UserManager usermanager = new UserManager(); usermanager.del("Danny"); } public void testFindUserById() { UserManager usermanager = new UserManager(); String username = usermanager.findUserById("0001"); System.out.println(username); } }
注意:单元测试类必须要继承 junit.framework.TestCase 类。
#4、进行单元测试
这时,一个单元测试就建好了( 真的 so easy 有木有?),右键点击被测试方法的方法名 → Run As → JUnit Test,即可执行测试,比如对上面的testAdd方法测试的效果如下:
左上方有表示成功执行的绿色进度条、执行过程中有0个错误和0个失败、执行时间为0.007秒等测试信息。
到此,您就可以通过上述信息进行判断您的模块是否正确,性能是否还可以再优化,也可以用通过调试、打印等方式来辅助观察测试的执行情况。
#扩展——JUnit断言
JUnit断言,听起来很高大上,其实就是JUnit为我们提供的几个函数,用来辅助说明被测方法是否达到了预期效果。
比如JUnit中的一个断言assertEquals(expected,actual),expectd表示测试结果的期望值,actual表示测试结果的实际值。
用在上述测试类UserManagerTest中的testFindUserById()方法中的情景如下:
public void testFindUserById() { UserManager usermanager = new UserManager(); String actual= usermanager.findUserById("0001"); String expected="Danny"; this.assertEquals(expected,actual);//断言 }
这里的预期值写的是"Danny",实际测试效果为测试成功:
当把预期值改为"DannyHoo",实际测试效果为测试失败:
JUnit还为我们提供了多种断言,比如验证测试结果是否为null的断言——assertNull(object)、验证测试结果是否为true的断言——assertTrue(condition)等等。如果想了解更多,可以参考JUnit的帮助文档,这里不再一 一列举。
#温馨提示
为了使项目比较清晰、规范,可以将单元测试的类单独放在一个source folder或者一个包中,比如这种结构:
【 转载请注明出处——胡玉洋《三分钟学会JUnit单元测试》】