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;
Другие вопросы по тегам