assert collection does not contain item
Asked Answered
K

3

87

Using the hamcrest library for Java, what's a nicely readable way to do the opposite of:

assertThat(someCollection, hasItem(someItem))

I want to make sure someCollection does not contain item someItem

Kalikalian answered 20/2, 2012 at 2:41 Comment(0)
L
157

Negate the hasItem assertion

assertThat(someCollection, not(hasItem(someItem)))
Loaded answered 20/2, 2012 at 2:52 Comment(4)
Once I imported the package IsNot (import static org.hamcrest.core.IsNot.not) it worked well.Kalikalian
The Matcherzs defines all of the. factory methods so you can have a single * static import. I'll look it up a work if no one else posts the line in the next hour.Rhebarhee
@Kalikalian - From the basic tutorial, import static org.hamcrest.MatcherAssert.assertThat; and import static org.hamcrest.Matchers.*;Rhebarhee
In hamcrest version 1.3- assertThat(someCollection, not(hasItem(someItem))) didn't work so I used assertThat(someCollection, not(contains(someItem)))Tymbal
H
7

If you need to Assert an Array, the same logic use not(hasItemInArray())

final String[] availableIds = {"123", "321"};
final String userId = "333";

softAssert.assertThat("Id not found", availableIds, not(hasItemInArray(userId)));
softAssert.assertAll();
Hocuspocus answered 6/6, 2016 at 17:56 Comment(0)
W
-3

or you can do;

.extract().jsonPath().getObject("data", pojo.class);  
(above is response)

assertThat(response, not(hasItem(bodyYouArePosting)));
Wiggins answered 13/3, 2022 at 2:15 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.