class 的每个方法的 JUnitParams
JUnitParams for each method of class
是否可以使用 JUnitParams 和 class 级别注释对每个测试方法 class 进行参数化测试?类似于:
@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) {
......
}
}
测试class应该是这样的:
@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
.
不,您不能拥有涵盖所有测试方法的 class 级参数注释。您必须在每个测试方法上声明 @Parameters(method = "paramsGenerator")
。您的用例非常罕见 - 大多数情况下,不同的测试方法需要不同的参数(例如,您有一种方法用于有效输入,另一种方法用于无效输入)。
是否可以使用 JUnitParams 和 class 级别注释对每个测试方法 class 进行参数化测试?类似于:
@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) {
......
}
}
测试class应该是这样的:
@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
.
不,您不能拥有涵盖所有测试方法的 class 级参数注释。您必须在每个测试方法上声明 @Parameters(method = "paramsGenerator")
。您的用例非常罕见 - 大多数情况下,不同的测试方法需要不同的参数(例如,您有一种方法用于有效输入,另一种方法用于无效输入)。