Spring(3)—— Junit框架单元测试
Junit主要用于单元测试,即白盒测试。它是一个开源的由JAVA开发的一个用于测试的框架。
Junit的几个基本概念:TestCase,TestSuite,TestFixtrue
TestCase:代表一个测试用例,每一个TestCase实例都对应一个测试,这个测试通过这个TestCase实例的名字标志,以便在测试结果中指明哪个测试出了问题。TestCase继承自Assert,因此可以实现各种断言。
TestSuite:代表需要测试的一组测试用例,也是测试用例的集合。
TestFixtrue:代表一个测试环境,用于租户一组测试用例,这组测试用例需要共同的测试运行环境。
现在世面上有很多的测试工具,比如说NUNIT,PHPUNIT等。但是在JAVA的世界里面JUnit是最适合我们的单元测试工具。
A:可以使测试代码与产品代码分开
B:针对某一个类的测试代码通过较少的改动便可以应用于另一个类的测试
C:易于集成到测试人员的构建过程中,JUnit和Ant的结合可以实施增量开发
D:JUnit是公开源代码的,可以进行二次开发
E:可以方便地对JUnit进行扩展
编写原则:
A: 是简化测试的编写,这种简化包括测试框架的学习和实际测试单元的编写
B: 是使测试单元保持持久性
C: 是可以利用既有的测试来编写相关的测试
例证:
第一步:拷贝jar包
junit-3.8.2.jar(4.x主要增加注解应用)
第二步:编写业务类
public class User{ private String username; public String getUsername(){ return username; } public void setUsername(String username){ this.username = username; } //添加方法 public String logion()throws Exception{ if("admin".equal(username)){ return "success" }else{ return "error" } } }
第三步:定义测试类
测试类最好单独建立项目,或者单独定义文件夹储存,需要继承junit.framework.TestCase
第四步:增加测试方法
测试方法必须是public,不应该有返回值,方法名必须以test开头,无参数测试方法是有执行先后顺序,按照方法的定义先后顺序。多个测试方法对同一个业务方法进行测试,一般每个逻辑分支机构都有测试到。
public class TestUserextends TestCase{ publicvoid testUser_Success() throws Exception{ //准备数据 Useraction = new User(); action.setUsername("admin"); //调用被测试方法 Stringresult = action.login(); //判断测试是否通过 assertEquals("success",result); } }
运行程序,如果测试成功会出现如下图所示的结果
如果运行失败,有方法没有通过测试,那么就会显示出在哪个方法出错了。上图中绿色的条会变成红色的。
第五步:测试类的生命周期方法
//用来进行初始化操作 @Override protectedvoid setUp() throws Exception { System.out.println("setUp..."); } //用来做销毁操作 @Override protectedvoid tearDown() throws Exception { System.out.println("tearDown..."); }
setUp方法会在每个测试方法前执行一次。tearDown方法会在每个测试方法后执行一次。