2016-07-29 32 views
1

Dieser Test gibt mir alle Status als Booleschen Wert entweder wahr oder falsch von API:Arraylist <Boolean> Assertion Java ohne hamcrest

List<Boolean> allStatus = event.getResponse().getBody().jsonPath().getList("enabled"); 

Es gibt keine spezifische Vorstellung davon, wie viele Status wird es sein, und es gibt keine feste Größe; es könnte sein, Größe 20 oder 1.

Um diese Behauptung zu überprüfen, wurde ich eine for-Schleife laufen und jeden Wert überprüft:

assertNotNull(allStatus); 
for (Boolean status : allStatus) { 
    assertEquals("FAILED Disable event status ", false, status); 
} 

Ich möchte wissen, was es gibt einen besseren Weg, ein solches Szenario zu behandeln ?

+0

Was meinst du besser? Suchst du kürzer? Es kann nicht schneller werden. – 4castle

+0

Möchten Sie nach dem ersten Fehler anhalten? –

+1

Mögliches Duplikat von [Gibt es einen Hamcrest für jeden "Matcher, der alle Elemente einer Collection oder Iterable mit einem einzelnen spezifischen Matcher übereinstimmt?] (Http://stackoverflow.com/questions/28860135/is-there-a-hamcrest -für-jeden-Matcher-das-behauptet-alle-Elemente einer Sammlung –

Antwort

3

Sie nutzen könnten allMatch

assertNotNull(allStatus); 
assertTrue(allStatus.stream().allMatch(b -> !b)); 
+0

@ 4castle gute Idee, bearbeitet –

+1

Eigentlich möchten Sie möglicherweise zu 'b ->! B 'zurück, weil der [Quellcode] (http://grepcode.com/file/repository.grepcode.com/java/root/ jdk/openjdk/6-b14/java/lang/Boolean.java # Boolean.equals% 28java.lang.Object% 29) für 'equals' macht auch das Unboxing. Entschuldigung, – 4castle

0

könnten Sie streams von Java 8 eingeführt verwenden:

List<Boolean> allStatus = new ArrayList<>(); 
allStatus.stream().forEach((status) -> { assert status; }); 

Dies ist im Grunde tun das gleiche wie der Code, den Sie zur Verfügung gestellt, aber mit neuerer Technologie. Sie können es nicht schneller machen, weil Sie do jeden einzelnen Eintrag überprüfen müssen.

0
Java-Streams

Vielleicht eine einzige Behauptung tun?

boolean tmp = true; 
for (Boolean status : allStatus) tmp = tmp&&status; 
assert tmp; 
0

Wir verwenden unter Behauptung Aslo kann:

List<Boolean> allStatus = event.getResponse().getBody().jsonPath().getList("enabled"); 
assertNotNull(allStatus); 
    assertEquals("FAILED Disable event status ", false, allStatus.contains(Boolean.valueOf(true))); 
+0

Ich denke, das wird nur einmal prüfen, ob der Status da ist oder nicht. In allStatus wird der Status eines anderen Ereignisses angezeigt –