Junit4進行參數化測試

原文來自:http://www.cnblogs.com/byron0918/p/4801152.html

  @RunWith, 當類被@RunWith註解修飾,或者類繼承了一個被該註解修飾的類,JUnit將會使用這個註解所指明的運行器(runner)來運行測試,而不是JUnit默認的運行器。

  
  要進行參數化測試,需要在類上面指定如下的運行器:
  @RunWith (Parameterized.class)

  然後,在提供數據的方法上加上一個@Parameters註解,這個方法必須是靜態static的,並且返回一個集合Collection。


  在測試類的構造方法中爲各個參數賦值,(構造方法是由JUnit調用的),最後編寫測試類,它會根據參數的組數來運行測試多次。

  注意:必須要爲類的所有字段賦值,不管你是不是都用到!否則,Junit會出錯。

 

JUnit4中參數化測試要點: 
1. 測試類必須由Parameterized測試運行器修飾 
2. 準備數據。數據的準備需要在一個方法中進行,該方法需要滿足一定的要求: 
    1)該方法必須由Parameters註解修飾 
    2)該方法必須爲public static的 
    3)該方法必須返回Collection類型 
    4)該方法的名字不做要求 
    5)該方法沒有參數


public class Add {
  public int add(int input1, int input2) {
    return input1 + input2;
  }
}

複製代碼
package org.test;  
  
import java.util.Arrays;  
import java.util.Collection;  
  
import org.junit.Assert;  
import org.junit.Test;  
import org.junit.runner.RunWith;  
import org.junit.runners.Parameterized;  
import org.junit.runners.Parameterized.Parameters;  
/** 
 * 參數化測試的類必須有Parameterized測試運行器修飾 
 * 
 */  
@RunWith(Parameterized.class)  
public class AddTest3 {  
  
    private int input1;  
    private int input2;  
    private int expected;  
      
    /** 
     * 準備數據。數據的準備需要在一個方法中進行,該方法需要滿足一定的要求: 
 
         1)該方法必須由Parameters註解修飾 
         2)該方法必須爲public static的 
         3)該方法必須返回Collection類型 
         4)該方法的名字不做要求 
         5)該方法沒有參數 
     * @return 
     */  
    @Parameters  
    @SuppressWarnings("unchecked")  
    public static Collection prepareData(){  
        Object [][] bject = {{-1,-2,-3},{0,2,2},{-1,1,0},{1,2,3}};  
        return Arrays.asList(object);  
    }  
      
    public AddTest3(int input1,int input2,int expected){  
        this.input1 = input1;  
        this.input2 = input2;  
        this.expected = expected;  
    }  
    @Test  
    public void testAdd(){  
        Add add = new Add();  
        int result = add.add(input1, input2);  
        Assert.assertEquals(expected,result);  
    }  
      
}
複製代碼

注:在測試的時候,例如我,在測試函數的時候,單獨測試一個方法,而不是將一個類中的所有的方法進行測試,而在參數化測試過程中,使用上面的測試方法,一直不能通過,到後來沒有辦法了,運行了整個測試類,代碼通過了,回頭一想也也確實這麼回事,這個參數化方法測試函數需要上面的參數,而單獨運行一個函數的話就無法獲取上面的變量。所有在測試參數化測試用例的時候,要運行整個測試類。

 

本文根據http://www.cnblogs.com/mengdd/archive/2013/04/13/3019336.html和http://www.51testing.com/html/88/377588-817359.html整理而來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章