Można połączyć IsCollectionWithSize
a OrderingComparison
dopasowywania:
@Test
public void test() throws Exception {
Collection<String> collection = ...;
assertThat(collection, hasSize(greaterThan(0)));
}
Dla collection = null
masz
java.lang.AssertionError:
Expected: a collection with size a value greater than <0>
but: was null
Dla collection = Collections.emptyList()
masz
java.lang.AssertionError:
Expected: a collection with size a value greater than <0>
but: collection size <0> was equal to <0>
- Dla testu
collection = Collections.singletonList("Hello world")
test przechodzi.
Edit:
Właśnie zauważyłem, że po approch jest nie robocze:
assertThat(collection, is(not(empty())));
Im więcej o tym myślę, tym bardziej polecam nieco zmienione wersja instrukcji napisanej przez OP, jeśli chcesz przetestować jawnie na wartość null.
assertThat(collection, both(not(empty())).and(notNullValue()));
To wygląda dla mnie bardzo prosto. Ważne jest również, aby twoje testy wyrażały swoje zamiary z jak największą klarownością, a kod jest bardzo czytelny. – skaffman
Nie znam się na hamowaniu, ale logicznie można sprawdzić "size> = 0", jeśli API obsługuje takie wywołania. – mike
ten tytuł pytania prosi o przeciwieństwo ciała tego pytania. Aby odpowiedzieć na pytanie tytuł: 'assertThat (metadane, albo (jest (puste())) .or (is (nullValue()));' – Abdull