代码之家  ›  专栏  ›  技术社区  ›  Tyler

JUnit理论:为什么我不能使用列表(而不是数组)作为数据点?

  •  11
  • Tyler  · 技术社区  · 14 年前

    我已经开始使用新的JUnit Theories 用于参数化测试的功能。例如,如果你的理论是建立在 Integer 论点 Theories 测试运行程序接收任何 整数 标记为 @DataPoint :

    @DataPoint
    public static Integer number = 0;
    

    以及任何 整数 数组中的S:

    @DataPoints
    public static Integer[] numbers = {1, 2, 3};
    

    或者甚至返回数组的方法,比如:

    @DataPoints 
    public static Integer[] moreNumbers() { return new Integer[] {4, 5, 6}; };
    

    但不在 List S.以下内容不起作用:

    @DataPoints 
    public static List<Integer> numberList = Arrays.asList(7, 8, 9);
    

    编辑 :似乎也不支持其他集合,因为这不起作用。

    @DataPoints 
    public static Collection<Integer> numberList = new HashSet<Integer>() {{
      add(7);
      add(8);
      add(9);
    }};
    

    我做错了什么,还是做了什么? S Set S等等。真的不工作吗?是否有意识的设计选择不允许使用 Collection 作为数据点,还是只是一个尚未实现的特性?是否计划在JUnit的未来版本中实现它?

    (我目前使用的是4.8.1版,而最新版本是4.8.2版,但是 it looks like 这不是4.8.2中添加的内容)

    1 回复  |  直到 14 年前
        1
  •  1
  •   iwein    14 年前

    我已经研究过这个问题,现在似乎有一个待定的承诺。它不在那里的原因似乎很简单,没有人要求它,而且做起来相当复杂(正如你在 your patch )