天天看點

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,如需轉載請自行聯系原作者