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