2016年9月12日,星期一

朱尼特参数化测试

朱尼特 Testing框架允许我们在out Test Class中使用Parameters。要编写参数化测试用例,测试类应仅包含一个测试用例,我们可以按照下面的示例中的说明为其提供多个参数。

通知特定类作为参数化测试添加注释 
@RunWith(Parameterized.class) 

此类需要一个带有@Parameters批注的静态方法。此方法生成数组的集合,集合中的每个项目都称为数组。我们还可以在公共字段上使用@Parameter批注,并在测试中注入测试值。

让我们看下面的示例,以了解如何使用参数化Junit测试  -


import static org.junit.Assert.assertEquals;

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;

@RunWith(Parameterized.class)
public class ParameterizedTestUsingConstructor {

    private int num1;
    private int num2;

    public ParameterizedTestUsingConstructor(int p1, int p2) {
        num1 = p1;
        num2 = p2;
    }

    // creates the test data
    @Parameters
    public static Collection<Object[]> data() {
        Object[][] data = new Object[][] { { 1 , 2 }, { 5, 3 }, { 121, 4 } };
        return Arrays.asList(data);
    }


    @Test
    public void testMultiplyException() {
        MyClass tester = new MyClass();
        assertEquals("Result", num1 + num2, tester.add(num1, num2));
    }


    // class to be tested
    class MyClass {
        public int add(int i, int j) {
            return i + j;
        }
    }

}

测试用例根据配置的数据集执行3次。



0 comments:

发表评论