Я использую import static org.junit.jupiter.api.Assertions.*;
для модульного тестирования, и я должен утверждать для многих элементов, если они ложны. Например:
boolean item1 = false;
boolean item2 = false;
boolean item3 = false;
boolean item4 = false;
// is something like this possible
Assertions.assertAllFalse(item1, item2, item3, item4);
Какой метод следует использовать и как?
Вы можете использовать assertFalse(item1 || item2 || item3 || item4)
.
В зависимости от количества ваших значений проще всего (ИМХО) просто записать его как логическое выражение:
Assertions.assertThat(item1 || item2 || item3 || item4).isFalse();
Assertions.assertThat(!(item1 && item2 && item3 && item4)).isTrue();
Если одно из ваших логических значений истинно, тест не пройден.
Или, если вы заранее не знаете количество значений, могут помочь итерации и утверждения массива:
final List<Boolean> bools = …; // e.g. List.of(item1, item2, item3, item4)
Assertions.assertThat(bools).containsOnly(false);
Assertions.assertThat(bools).doesNotContain(true);
Assertions.assertThat(bools).allMatch(b -> !b);
Assertions.assertThat(bools).noneMatch(b -> b);
Или вы можете даже использовать простые потоки Java, чтобы выразить свои ожидания:
final List<Boolean> bools = …; // e.g. List.of(item1, item2, item3, item4)
Assertions.assertThat(bools.stream().filter(b -> b).count()).isEqualTo(0);
Assertions.assertThat(bools.stream().allMatch(b -> !b)).isTrue();
Вы можете реализовать свой собственный метод для этого:
@Test
public void test(){
assertAllFalse(true, true, false);
}
public void assertAllFalse(Boolean... conditions){
List.of(conditions).forEach(Assert::assertFalse);
}
@Abel de Bruijn: Рад слышать! :) Спасибо за ответ! Не стесняйтесь пометить один из ответов как принятый, см. stackoverflow.com/help/someone-answers