1. 程式人生 > >spring框架_03 junit單元測試

spring框架_03 junit單元測試

 單元測試不是頭一次聽說了,但只是聽說從來沒有用過。一個模組怎麼測試呢,是不是得專門為一單元寫一個測試程式,然後將測試單元程式碼拿過來測試? 我是這麼想的。學到spring框架這才知道單元測試原來是這麼回事兒。

 下面以上一篇文章中set注入的第一個例項為測試物件。進行單元測試。

1,拷貝jar包

 junit-3.8.2.jar(4.x主要增加註解應用)

2,寫業務類

[java] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. public class User{  
  2.     privateString username;  
  3.     publicString getUsername() {  
  4.        returnusername;  
  5.     }  
  6.     publicvoid setUsername(String username) {  
  7.        this.username= username;  
  8.     }  
  9.     //新增方法  
  10.     publicString login() throws Exception{  
  11.        if("admin".equals(username){  
  12.           return"success";  
  13.        }else{  
  14.           return"error";  
  15.        }  
  16.     }  
  17. }  
<span style="font-size:18px;">public class User{
    privateString username;
 
    publicString getUsername() {
       returnusername;
    }
    publicvoid setUsername(String username) {
       this.username= username;
    }
 
    //新增方法
    publicString login() throws Exception{
       if("admin".equals(username){
          return"success";
       }else{
          return"error";
       }
    }
}</span>

3,定義測試類

  測試類最好單獨建立專案,或者單獨定義資料夾儲存,需要繼承junit.framework.TestCase

4,增加測試方法

測試方法必須是public,不應該有返回值,方法名必須以test開頭,無引數

 測試方法是有執行先後順序,按照方法的定義先後順序

 多個測試方法對同一個業務方法進行測試,一般每個邏輯分支結構都有測試到。

[java] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. public class TestUserextends TestCase{   
  2.     publicvoid testUser_Success() throws Exception{   
  3.        //準備資料  
  4.        Useraction = new User();  
  5.        action.setUsername("admin");  
  6.        //呼叫被測試方法  
  7.        Stringresult = action.login();  
  8.        //判斷測試是否通過  
  9.        assertEquals("success",result);   
  10.     }  
  11. }  
<span style="font-size:18px;">public class TestUserextends TestCase{ 
    publicvoid testUser_Success() throws Exception{ 
       //準備資料
       Useraction = new User();
       action.setUsername("admin");

       //呼叫被測試方法
       Stringresult = action.login();
 
       //判斷測試是否通過
       assertEquals("success",result); 
    }
}</span>

  執行程式,如果測試成功會出現如下圖所示的結果


 如果執行失敗,有方法沒有通過測試,那麼就會顯示出在哪個方法出錯了。上圖中綠色的條會變成紅色的。

5,測試類的生命週期方法

[java] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. //用來進行初始化操作  
  2. @Override  
  3. protectedvoid setUp() throws Exception {  
  4.    System.out.println("setUp...");  
  5. }  
  6. //用來做銷燬操作  
  7. @Override  
  8. protectedvoid tearDown() throws Exception {  
  9.    System.out.println("tearDown...");  
  10. }  
<span style="font-size:18px;"> 
//用來進行初始化操作
@Override
protectedvoid setUp() throws Exception {
   System.out.println("setUp...");
}
 
//用來做銷燬操作
@Override
protectedvoid tearDown() throws Exception {
   System.out.println("tearDown...");
}</span>


setUp方法會在每一個測試方法前執行一次。tearDown方法會在每一個測試方法後執行一次