Java 类的每个方法的JUnitParams
是否可以使用JUnitParams和类级注释为测试类的每个方法运行参数化测试?比如:Java 类的每个方法的JUnitParams,java,testing,junitparams,Java,Testing,Junitparams,是否可以使用JUnitParams和类级注释为测试类的每个方法运行参数化测试?比如: @RunWith(JUnitParamsRunner.class) @Parameters(method = "paramsGenerator") public class TestMethod { public Integer[] paramsGenerator() { return new Integer[] {1, 2, 3}; } @Test publ
@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) {
......
}
}
测试类应如下所示:
@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
}
}
@RunWith(参数化的.class)
公共类测试用例{
私有int-myInt;
公共测试用例(int-myInt){
this.myInt=myInt;
}
@参数(name=“{0}”)
公共静态收集数据(){
整数[]数据=新整数[]{1,2,3,4};
返回数组.asList(数据);
}
@试验
公共void test1(){
//待办事项
}
@试验
公共无效测试2(){
//待办事项
}
}
我不知道你是从哪里得到JUnitParamsRunner的。正如您在我的示例中所看到的,JUnit4定义了
参数化的否,您不能有覆盖所有测试方法的类级参数注释。必须在每个测试方法上声明@参数(method=“paramsGenerator”)
。您的用例非常罕见-大多数情况下,不同的测试方法需要不同的参数(例如,您有一种方法用于有效输入,另一种方法用于无效输入)。在询问之前您是否尝试过?这应该是默认行为。是的,应该是,但不是。我得到的方法test1应该没有参数
您必须定义一个构造函数,该构造函数接受参数并将其存储在字段中。然后,这些方法可以使用字段中的值,而不是作为参数。问题是关于JUnit而不是参数化的