3

是否可以使用 JUnitParams 和类级别注释为测试类的每个方法运行参数化测试?就像是:

@RunWith(JUnitParamsRunner.class)
@Parameters(method = "paramsGenerator")
public class TestMethod {

    public Integer[] paramsGenerator() {
        return new Integer[] {1, 2, 3};
    }

    @Test
    public void test1(Integer myInt) {
        ......
    }

    @Test
    public void test2(Integer myInt) {
        ......
    }
}
4

2 回答 2

4

不,您不能拥有涵盖所有测试方法的类级参数注释。您必须@Parameters(method = "paramsGenerator")在每个测试方法上声明。您的用例非常少见——通常不同的测试方法需要不同的参数(例如,您有一种方法用于有效输入,另一种用于无效输入)。

于 2017-05-15T14:47:00.433 回答
1

测试类应该是这样的:

@RunWith(Parameterized.class)
public class Testcase {

    private int myInt;

    public Testcase(int myInt) {
        this.myInt = myInt;
    }

    @Parameters(name = "{0}")
    public static Collection<Integer> data() {
        Integer[] data = new Integer[] {1,2,3,4};

        return Arrays.asList(data);
    }

    @Test
    public void test1() {
        // TODO
    }

    @Test
    public void test2() {
        // TODO
    }
}

我不知道你从哪里来JUnitParamsRunner的。正如您在我的示例中所看到的,JUnit 4 定义了Parameterized.

于 2017-05-15T08:13:33.547 回答