2010-06-03 3 views
11

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)

+0

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

+0

+1 Scheint ziemlich merkwürdig. Hast du andere Sammlungstypen getestet? – ponzao

+0

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

Antwort

1

ich auf die Frage geschaut haben, und es scheint, es gibt jetzt eine ausstehende Verpflichtung dafür. Der Grund dafür, dass es nicht dort war, scheint einfach zu sein, dass niemand danach gefragt hat, und es ist ziemlich komplex zu tun (wie Sie in your patch bewiesen haben)

+1

Danke für das Follow-up. Ich hätte dieser SO-Antwort einen Kommentar hinzufügen sollen, der besagt, dass ich es geschafft habe, eine Lösung zu finden (obwohl es sicherlich nicht perfekt ist) und dann eine Pull-Anfrage an GitHub gesendet habe. – MatrixFrog

+0

Ich war mir nicht sicher, ob es eine gute Sache ist, einen Kommentar in 3 Jahre alt Beitrag zu schreiben. Aber ich möchte nur wissen, was das Update zu diesem Thema ist. Dieses Problem wird in der neusten Mockito-Version immer noch nicht behoben. Auch ein Link zum oben genannten Problem existiert nicht mehr. – user613114

Verwandte Themen