Контрольный список AssertJ содержит X элементов, но все они равны нулю

Я просмотрел примеры AssertJ (https://github.com/joel-costigliola/assertj-examples/blob/master/assertions-examples/src/test/java/org/assertj/examples/IterableAssertionsExamples.java), но я не могу найти пример: -

  1. список утверждений имеет размер X, например 3
  2. утверждать, что все элементы null

e.g.

List<String> items= Arrays.asList(null, null, null);
assertThat(items).hasSize(3).containsOnlyNulls();

Примечание. containsOnlyNulls не существует, но по сути это то, что я пытаюсь проверить. Можно ли этого добиться в AssertJ?


person bobmarksie    schedule 21.08.2017    source источник


Ответы (1)


Вы можете использовать либо

// need to cast to String
assertThat(items).hasSize(3).containsOnly((String) null);

or

assertThat(items).filteredOn(item -> item == null).hasSize(3);

- Редактировать -

containsOnlyNulls" было добавлено в AssertJ в версии 3.9.0+.

Пример:

// assertion will pass
Iterable<String> items = Arrays.asList(null, null, null);
assertThat(items).containsOnlyNulls();

// assertion will fail because items2 contains a not null element
Iterable<String> items2 = Arrays.asList(null, null, "notNull");
assertThat(items2).containsOnlyNulls();

// assertion will fail since an empty iterable does not contain any elements and therefore no null ones.
Iterable<String> empty = new ArrayList<>();
assertThat(empty).containsOnlyNulls(); 
person Joel Costigliola    schedule 21.08.2017
comment
Отлично, спасибо, Джоэл! Есть ли планы добавить новые методы в будущем, например, containsOnlyNulls или они считаются слишком раздутыми? - person bobmarksie; 22.08.2017
comment
поскольку у нас есть containsNull, мы можем добавить containsOnlyNulls, вы можете создать проблему на github.com / joel-costigliola / assertj-core / issues - person Joel Costigliola; 22.08.2017
comment
Готово (github.com/joel-costigliola/assertj-core/issues/1062) - Престижность такой замечательной библиотеки, кстати, - пользовался ею в прошлом году, и она мне очень понравилась! - person bobmarksie; 22.08.2017