Junit 参数化数组

Junit Parameterized arrays

有什么方法可以用数组而不是整数来测试用例吗? 例如:

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:参数数量错误”,因为我在构造函数中使用带参数化参数的整数,有什么方法可以用数组测试输入吗?

您的代码有两个问题:

  1. 你的数组必须使用相同的类型,否则你会
    得到 IllegalArgumentException: argument type mismatch

  2. 您的测试数据仅通过创建一个 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, 1]
[2, 2, 2]

您可以为您的数据成员使用 @Parameter 注释,而不是使用构造函数,它必须是 public then

@RunWith(Parameterized.class)
public class PTest {

   @Parameter
   public Integer[] myArray;

   @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));
   }

}