Я начал использовать новое (выход) функция JUnit Theories параметризации тестов. Если Ваша Теория настраивается для взятия, например, Integer
аргумент, Theories
исполнитель тестов забирает любого Integer
s отмеченный с @DataPoint
:
@DataPoint
public static Integer number = 0;
а также любой Integer
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 numberList = Arrays.asList(7, 8, 9);
Править: Похоже, что другие наборы не поддерживаются также, поскольку это не работает.
@DataPoints
public static Collection numberList = new HashSet() {{
add(7);
add(8);
add(9);
}};
Я делаю что-то не так или делаю List
s, Set
s, и т.д. действительно не работают? Действительно ли это было сознательное проектное решение для не разрешения использования Collection
s как точки данных, или это - просто опция, которая еще не была реализована? Там планирует, должны реализовать его в будущей версии JUnit?
(Я в настоящее время использую версию 4.8.1, тогда как новейшая версия 4.8.2, но похоже, что это не что-то, что было добавлено в 4.8.2),
Я изучил проблему, и кажется, что для нее есть ожидающая фиксация. Причина, по которой его там не было, по-видимому, проста в том, что об этом никто не просил, и это довольно сложно сделать (как вы доказали в своем патче )