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

时间:2010-06-03 16:30:17

标签: unit-testing junit

我已经开始使用新的(ish)JUnit Theories功能来参数化测试。如果您的理论设置为采用Integer参数,则Theories测试运动员会选择标有Integer的任何@DataPoint

@DataPoint
public static Integer number = 0;

以及数组中的任何Integer

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

甚至是返回数组的方法,如:

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

但不在List中。以下不起作用:

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

我做错了什么,或者List s,Set等真的不起作用?这是一个有意识的设计选择,不允许使用Collection作为数据点,还是只是一个尚未实现的功能?是否有计划在未来版本的JUnit中实现它?

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

1 个答案:

答案 0 :(得分:1)

我已经看过这个问题,现在似乎有一个待定的提交。它不在那里的原因似乎只是没有人要求它而且这很复杂(正如你在your patch中证明的那样)