Ich habe begonnen, die neue (ish) JUnit Theories Funktion für die Parametrisierung von Tests zu verwenden. Wenn Ihre Theorie eingerichtet ist, zu nehmen, zum Beispiel ein Integer
Argument, die Theories
Testläufer nimmt alle Integer
s markiert mit @DataPoint
:JUnit Theorien: Warum kann ich Listen (statt Arrays) nicht als DataPoints verwenden?
@DataPoint
public static Integer number = 0;
sowie alle Integer
s in Arrays:
@DataPoints
public static Integer[] numbers = {1, 2, 3};
oder auch Methoden, die Arrays wie zurückgeben:
@DataPoints
public static Integer[] moreNumbers() { return new Integer[] {4, 5, 6}; };
aber nicht in List
s. Die folgende funktioniert nicht:
@DataPoints
public static List<Integer> numberList = Arrays.asList(7, 8, 9);
bearbeiten: Es sieht aus wie andere Sammlungen werden ebenfalls nicht unterstützt, da dies nicht funktioniert.
@DataPoints
public static Collection<Integer> numberList = new HashSet<Integer>() {{
add(7);
add(8);
add(9);
}};
Bin ich etwas falsch zu machen, oder sie List
s, Set
s usw. arbeiten wirklich nicht? War es eine bewusste Design-Entscheidung, die Verwendung von Collection
s als Datenpunkte nicht zuzulassen, oder ist das nur ein Feature, das noch nicht implementiert wurde? Gibt es Pläne, es in einer zukünftigen Version von JUnit zu implementieren?
(Ich verwende derzeit Version 4.8.1, während die neueste Version 4.8.2 ist aber it looks like das ist nicht etwas, das in 4.8.2 hinzugefügt wurde)
Als eine Randnotiz, sehe ich kein Tag für diese "Theorien" -Funktion. Ich gehe davon aus, dass der Tag "Theory" für theoretische Fragen zu Dingen wie Big-O-Komplexität und dergleichen steht. Zögern Sie nicht, es zu ändern. – MatrixFrog
+1 Scheint ziemlich merkwürdig. Hast du andere Sammlungstypen getestet? – ponzao
Habe es einfach mit einem 'Set' versucht und die Frage aktualisiert. Das funktioniert auch nicht, egal ob Sie es als 'Set' oder' Collection' deklarieren. – MatrixFrog