Missbrauch von Hamcrest hasItems

8

Ich habe eine Liste von Ganzzahlen (aktuell) und ich möchte überprüfen, ob diese Liste alle Elemente aus der Liste erwartet enthält und nicht einmal ein Element aus der Liste notExpected, so dass Code wie folgt aussieht:

%Vor%

So lange so gut. Aber wenn ich

hinzufüge %Vor%

Der Test ist auch grün. Habe ich den Hamcrest Matcher missbraucht? Übrigens.

%Vor%

gibt mir die richtige Antwort, aber ich dachte, dass ich den Hamcrest-Matcher einfach dafür verwenden kann. Ich benutze Junit 4.11 und Hamcrest 1.3

    
matlockx 18.02.2013, 08:45
quelle

1 Antwort

9

hasItems(notExpected...) würde nur dann mit current übereinstimmen, wenn alle Elemente von notExpected ebenfalls in current wären. Also mit der Linie

%Vor%

Sie behaupten, dass current nicht alle Elemente von notExpected enthält.

Eine Lösung um zu bestätigen, dass current keine Elemente enthält von notExpected :

%Vor%

und dann müssen Sie die Liste nicht einmal in Array konvertieren. Diese Variante ist vielleicht etwas lesbarer, erfordert aber die Konvertierung in ein Array:

%Vor%

Beachten Sie, dass diese Matcher nicht von CoreMatchers in hamcrest-core stammen, also müssen Sie eine Abhängigkeit von hamcrest-library hinzufügen.

%Vor%     
zagyi 18.02.2013, 09:52
quelle

Tags und Links