天天看点

Junit简介

  1.说来好笑,记得以前单元测试都是在目标类里简单写个main方法。要写的方法多了,结果把整个main方法写得特别长,注释的乱乱的,每当测出问题的时候还觉得自己很聪明,心里美滋滋的。可是,当一个方法需要回头再次测的时候就犯愁了----到底是哪段注释呢!所以,当接触到Junit的时候,就觉得再离不开它了。

  2.Junit是就是我们常用的单元测试工具,它采用测试类和目标类分离,各方法单独执行的方式进行灵活测试,并且它还支持我们的断点。更难能可贵的是,断言可以在我们不必分析测试结果的情况下,就可以知道程序的正确与否。  而且在使用上,也非常简单:

    1>.目标类照常写,测试类写在Source Folder里。其实为了清楚起见,测试类的包结构最好和目标类的包结构完全相同,一个目标类对应一个测试类,测试类的命名是在目标类名字的基础上,前面加Test;

  在测试类里,每个目标方法对应一个测试方法,测试方法的命名是在目标方法的基础上,前面加test。

    2>.测试类要继承Junit的TestCase类;测试方法无需返回值,只是在里面完成测试代码即可。

    3>.在测试方法里,可以通过目标类实例对目标方法进行调用测试。对于有返回值的情况,我们可以接收返回值,并设置一个期望返回值,使用断言方法(assertEquals)判断两者一否一致。

 3..各测试方法可以一起执行,也可以单独执行。如果执行过程中出现异常或者期望值和实际值不一致,则相应的Junit窗口会变红并给出提示信息。否则,就是我们最期望看到的满屏绿灯,各测试方法正常运行。

    注意,它用到一个Junit的jar包,我用的是junit-3.8.1.jar。

目标类:UserService.java

public class UserService { 

  public void insert(String user) { 

    System.out.println("UserService.insert():" + user); 

  } 

  public void delete(String user) { 

    System.out.println("UserService.delete():" + user); 

  public void update(String user) { 

    System.out.println("UserService.update():" + user); 

  public String query(String user) { 

    System.out.println("UserService.query():" + user); 

    return user; 

}

测试类:TestUserService.java

public class TestUserService extends TestCase { 

  public void testInsert(){ 

    UserService us=new UserService(); 

    us.insert("Li Lei"); 

  public void testDelete(){ 

    us.delete("Han Meimei"); 

  public void testUpdate(){ 

    us.update("Jim"); 

  public void testQuery(){ 

    /**接收实际返回值*/ 

    String result=us.query("Tom"); 

    /**设置个期望值*/ 

    String expected="Li Lei"; 

    /**比较实际值和期望值是否一致,本例中显然是不一致的,所以测试时会出错*/ 

    this.assertEquals(expected, result); 

     本文转自NightWolves 51CTO博客,原文链接:http://blog.51cto.com/yangfei520/308018,如需转载请自行联系原作者