微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Junit 参数化数组

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

解决方法

您的代码有两个问题:

  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]
[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 举报,一经查实,本站将立刻删除。