单元测试(3)--参数化测试方法

来源:互联网 发布:数据标签外在哪里设置 编辑:程序博客网 时间:2024/06/08 04:16

作用:

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

代码示例:

如何实现:
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;    }    }