assert that a list is not empty in JUnit
JunitJunit4Junit Problem Overview
I want to assert that a list is not empty in JUnit 4, when I googled about it I found this post : https://stackoverflow.com/q/3631110/4991526 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
.
Junit Solutions
Solution 1 - Junit
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;
Solution 2 - Junit
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.
IntelliJ
Settings -> Code Style -> Java -> Imports
Eclipse
Prefs -> Java -> Editor -> Content Assist -> Favourites
And the import itself is
import static org.hamcrest.CoreMatchers.is;
Solution 3 - Junit
assertEquals(Collections.Empty_List,Collections.emptyList())
Try this.
Solution 4 - Junit
You can check if your list is not equal an Empty List (Collections.EMPTY_LIST
), try this:
Assertions.assertNotEquals(Collections.EMPTY_LIST, yourList);
Solution 5 - Junit
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]
Solution 6 - Junit
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.
Solution 7 - Junit
You can change "is" to "equalTo": assertThat(result.isEmpty(), equalTo(false));