Is there a Hamcrest "for each" Matcher that asserts all elements of a Collection or Iterable match a single specific Matcher?
Use the Every
matcher.
import org.hamcrest.beans.HasPropertyWithValue;import org.hamcrest.core.Every;import org.hamcrest.core.Is;import org.junit.Assert;Assert.assertThat(people, (Every.everyItem(HasPropertyWithValue.hasProperty("gender", Is.is("male")))));
Hamcrest also provides Matchers#everyItem
as a shortcut to that Matcher
.
Full example
@org.junit.Testpublic void method() throws Exception { Iterable<Person> people = Arrays.asList(new Person(), new Person()); Assert.assertThat(people, (Every.everyItem(HasPropertyWithValue.hasProperty("gender", Is.is("male")))));}public static class Person { String gender = "male"; public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; }}