作用:
我们在测试登录框的时候,可能会输入帐号密码,根据不同的帐号密码,返回值也不一样。设计用例时,不同的仅仅是输入数据及预期的结果,而用例执行的中间过程是一样的。这时,我们可以通过参数化测试方法,来达到简化用例的目的,你可以创建一个通用的用例,然后通过数组的方式,给出输入的的变量值及对应的期望值。数组里面有几组参数,那么最终执行的用例数量也是相应的。
代码示例:
如何实现:
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;
}
}