天天看點

單元測試(3)--參數化測試方法 作用: 代碼示例:

作用:

我們在測試登入框的時候,可能會輸入帳号密碼,根據不同的帳号密碼,傳回值也不一樣。設計用例時,不同的僅僅是輸入資料及預期的結果,而用例執行的中間過程是一樣的。這時,我們可以通過參數化測試方法,來達到簡化用例的目的,你可以建立一個通用的用例,然後通過數組的方式,給出輸入的的變量值及對應的期望值。數組裡面有幾組參數,那麼最終執行的用例數量也是相應的。

代碼示例:

如何實作:

1.在測試類的開頭加:@RunWith?(Parameterized.class)

2.聲明了兩個變量inputTime,expectTime,在用例中分别對應到輸入的參數及預期的結果

3.一個public static Collection regExValues()方法用于定義參數數組(請嚴格遵照裡面的文法)

4.定義了一個構造函數,使用者輸入我們在數組中定義的值,注意,構造函數中第一個變量,對應數組中每組參數的第一個變量;依次類推……

import static org.junit.Assert.*;
 
import java.util.Arrays;
import java.util.Collection;
 
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
 
/** 
 * ValidUtilTest 類描述:
 *
 * @author harryli
 */
 
@RunWith(Parameterized.class)
public class ValidUtilTest {
    private String inputTime;
    private String expectTime;
    
    @Test
    public void testIsBuildTimeCorrectForDailyBuildJob()
    {
        ValidUtil util = new ValidUtil();
        String newTime = util.isBuildTimeCorrectForDailyBuildJob(inputTime);
        assertEquals(expectTime, newTime);
    }
    
    
    @Parameters
    public static Collection regExValues() {
     return Arrays.asList(new Object[][] {
      {"01:00", "01:00"},
      {"11:60", null },
      {"24:00", null },
      {"", null },
      {"4:00", "04:00" }});
    }
    
 
    
    public ValidUtilTest(String inputTime,String expectTime) {
     this.expectTime = expectTime;
     this.inputTime = inputTime;
    }
    
}