ArrayList<Boolean> Утверждение Java без подколенного сухожилия
Этот тест дает мне все статусы как логическое значение True или False из API:
List<Boolean> allStatus = event.getResponse().getBody().jsonPath().getList("enabled");
Нет конкретного представления о том, сколько будет статус, и нет фиксированного размера; это может быть размер 20 или 1.
Чтобы проверить это утверждение, я запустил цикл for и проверял каждое значение:
assertNotNull(allStatus);
for (Boolean status : allStatus) {
assertEquals("FAILED Disable event status ", false, status);
}
Я хочу знать, что есть лучший способ справиться с таким сценарием?
4 ответа
Решение
Вы могли бы использовать потоки Java allMatch
assertNotNull(allStatus);
assertTrue(allStatus.stream().allMatch(b -> !b));
Вы могли бы использовать streams
введено Java 8:
List<Boolean> allStatus = new ArrayList<>();
allStatus.stream().forEach((status) -> { assert status; });
Это в основном то же самое, что и код, который вы предоставили, но с более новой технологией. Вы не можете сделать это быстрее, потому что вам нужно проверять каждую запись.
Мы можем также использовать ниже утверждение:
List<Boolean> allStatus = event.getResponse().getBody().jsonPath().getList("enabled");
assertNotNull(allStatus);
assertEquals("FAILED Disable event status ", false, allStatus.contains(Boolean.valueOf(true)));
Может быть, сделать единственное утверждение?
boolean tmp = true;
for (Boolean status : allStatus) tmp = tmp&&status;
assert tmp;