如何解决Junit 参数化数组
有没有办法用数组而不是整数来测试用例? 例如:
private int[] myArray;
public SortingTestNullCase(int[] arr){
this.myArray=arr;
}
@Parameterized.Parameters
public static Collection testCases() {
return Arrays.asList(new Integer[][] {
{1,1,1},{2,2,2}
});
}
我总是收到错误“java.lang.IllegalArgumentException:参数数量错误”,因为我在构造函数中使用带参数化参数的整数,有什么办法可以用数组测试输入吗?
解决方法
您的代码有两个问题:
-
你的数组必须使用相同的类型,否则你会
得到IllegalArgumentException: argument type mismatch
-
您的测试数据仅通过创建一个
Integer[][]
数组来创建一个参数输入。
这是一些应该适合您的代码
@RunWith(Parameterized.class)
public class PTest {
private Integer[] myArray;
public PTest(Integer[] array) {
myArray = array;
}
@Parameters
public static Collection testCases() {
return Arrays.asList(new Integer[][] { { 1,1,1 } },new Integer[][] { { 2,2,2 } });
}
@Test
public void doTest() {
System.out.println(Arrays.toString(myArray));
}
}
结果看起来像
[1,1]
[2,2]
您可以对数据成员使用 @Parameter
注释,而不是使用构造函数,该注释必须为 public
然后
@RunWith(Parameterized.class)
public class PTest {
@Parameter
public Integer[] myArray;
@Parameters
public static Collection testCases() {
return Arrays.asList(new Integer[][] { { 1,2 } });
}
@Test
public void doTest() {
System.out.println(Arrays.toString(myArray));
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。