Renaud is Not Bill Gates
Renaud is Not Bill Gates

Reputation: 2084

assert that a list is not empty in JUnit

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

Answers (7)

Arindam
Arindam

Reputation: 713

assertEquals(Collections.Empty_List,Collections.emptyList())

Try this.

Upvotes: 1

Ricardo Nascimento
Ricardo Nascimento

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

Harry
Harry

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

Ruslan Omelchenko
Ruslan Omelchenko

Reputation: 5

You can change "is" to "equalTo": assertThat(result.isEmpty(), equalTo(false));

Upvotes: -2

LazerBanana
LazerBanana

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.


IntelliJ

Settings -> Code Style -> Java -> Imports 

Eclipse

Prefs -> Java -> Editor -> Content Assist -> Favourites 

And the import itself is import static org.hamcrest.CoreMatchers.is;

Upvotes: 44

Sahil
Sahil

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

JB Nizet
JB Nizet

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

Related Questions