2016-07-29 8 views
1

Этот тест дает мне все статусы как логическое значение: либо Истина или Ложь от API:ArrayList <Boolean> Assertion Java без Hamcrest

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

Там нет конкретной идеи о том, сколько статус будет, и есть нет фиксированного размера; она может быть размером 20 или 1.

Чтобы проверить это утверждение, я бег для цикла и проверок каждого значения:

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

Я хочу знать, что есть лучший способ справиться с таким сценарием ?

+0

Что вы имеете в виду лучше? Вы ищете короче? Он не может ускориться. – 4castle

+0

Вы хотите остановиться после первого провала? –

+1

Возможный дубликат [Есть ли Хамкрест "для каждого" Матчи, который утверждает, что все элементы коллекции или Итерабельные соответствуют одному конкретному Матчи?] (Http://stackoverflow.com/questions/28860135/is-there-a-hamcrest -for-each-matcher-that-asserts-all-elements-of-a-collection) –

ответ

3

Вы можете использовать Java Streams игровая allMatch

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

@ 4castle хорошая идея, отредактировано –

+1

На самом деле вы можете вернуться к 'b ->! B', потому что [исходный код] (http://grepcode.com/file/repository.grepcode.com/java/root/ jdk/openjdk/6-b14/java/lang/Boolean.java # Boolean.equals% 28java.lang.Object% 29) для 'equals' также делает unboxing. Извините, что – 4castle

0

Вы можете использовать streams введенную Java 8:

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

Это в основном делает то же самое, как код вы предоставили, но с новой технологией. Вы не можете сделать это быстрее, потому что вам нужно проверить каждую запись.

0

Может быть сделать один утверждение?

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

Мы можем также использовать следующее утверждение:

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

Я думаю, что это будет проверяться только один раз, если этот статус есть или нет. В allStatus, это будет статус другого события –

 Смежные вопросы

  • Нет связанных вопросов^_^