Reputation: 2084
I want to assert that a list is not empty in JUnit 4, when I googled about it I found this post : Checking that a List is not empty in Hamcrest which was using Hamcrest.
assertThat(result.isEmpty(), is(false));
which gives me this error :
The method is(boolean) is undefined for the type MaintenanceDaoImplTest
how can I do that without using Hamcrest
.
Upvotes: 79
Views: 208889
Reputation: 713
assertEquals(Collections.Empty_List,Collections.emptyList())
Try this.
Upvotes: 1
Reputation: 63
You can check if your list is not equal an Empty List (Collections.EMPTY_LIST
), try this:
Assertions.assertNotEquals(Collections.EMPTY_LIST, yourList);
Upvotes: 6
Reputation: 379
I like to use
Assert.assertEquals(List.of(), result)
That way, you get a really good error message if the list isn't empty. E.g.
java.lang.AssertionError:
Expected :[]
Actual :[something unexpected]
Upvotes: 2
Reputation: 5
You can change "is" to "equalTo": assertThat(result.isEmpty(), equalTo(false));
Upvotes: -2
Reputation: 7211
This reads quite nicely and uses Hamcrest. Exactly what you asked for ;) Always nice when the code reads like a comment.
assertThat(myList, is(empty()));
assertThat(myList, is(not(empty())));
You can add is
as a static import to your IDE as I know that eclipse and IntelliJ is struggling with suggesting it even when it is on the classpath.
Settings -> Code Style -> Java -> Imports
Prefs -> Java -> Editor -> Content Assist -> Favourites
And the import itself is
import static org.hamcrest.CoreMatchers.is;
Upvotes: 44
Reputation: 9
I was also looking for something similar, but the easiest work around can be
Assert.AreEqual(result.Count, 0);
When the collection has no records.
Upvotes: -2
Reputation: 691785
You can simply use
assertFalse(result.isEmpty());
Regarding your problem, it's simply caused by the fact that you forgot to statically import the is()
method from Hamcrest;
import static org.hamcrest.CoreMatchers.is;
Upvotes: 136