Sie können die IsCollectionWithSize
kombinieren und das OrderingComparison
Matcher:
@Test
public void test() throws Exception {
Collection<String> collection = ...;
assertThat(collection, hasSize(greaterThan(0)));
}
Für collection = null
Sie erhalten
java.lang.AssertionError:
Expected: a collection with size a value greater than <0>
but: was null
Für collection = Collections.emptyList()
erhalten Sie
java.lang.AssertionError:
Expected: a collection with size a value greater than <0>
but: collection size <0> was equal to <0>
- Für
collection = Collections.singletonList("Hello world")
ist der Test bestanden.
Edit:
habe gerade bemerkt, dass die folgende approch ist nicht Arbeits:
assertThat(collection, is(not(empty())));
Je mehr ich darüber nachdenke, desto mehr ich ein wenig verändert empfehlen würde Version der Anweisung, die vom OP geschrieben wurde, wenn Sie explizit auf null testen möchten.
assertThat(collection, both(not(empty())).and(notNullValue()));
Das sieht ziemlich einfach für mich aus. Außerdem ist es wichtig, dass Ihre Tests ihre Absicht so klar wie möglich zum Ausdruck bringen und dass der Code gut lesbar ist. – skaffman
Ich kenne hamcrest nicht wirklich, aber logisch könnte man nach Größe> = 0 suchen, wenn die API solche Aufrufe unterstützt. – mike
Der Titel dieser Frage stellt das Gegenteil des Körpers dieser Frage. Um den Titel der Frage zu beantworten: 'assertThat (metadata, entweder (is (empty())) .oder (is (nullValue())));' – Abdull