반응형
Collection 또는 Iterable의 모든 요소가 단일 특정 Matcher와 일치한다고 주장하는 Hamcrest "for each" Matcher가 있습니까?
Collection
또는 Iterable
of 항목이 주어졌을 때 Matcher
모든 항목이 단일 항목과 일치한다고 주장하는 일치자 조합(또는 일치자 조합)이 Matcher
있습니까?
예를 들어, 다음 항목 유형이 주어지면:
public interface Person {
public String getGender();
}
Person
s 컬렉션의 모든 항목에 특정 gender
값 이 있다는 주장을 작성하고 싶습니다 . 나는 다음과 같이 생각하고 있다.
Iterable<Person> people = ...;
assertThat(people, each(hasProperty("gender", "Male")));
each
Matcher를 직접 작성하지 않고 이를 수행할 수 있는 방법이 있습니까?
Every
매처를 사용하십시오 .
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는 또한 Matchers#everyItem
그것에 대한 지름길을 제공합니다 Matcher
.
전체 예
@org.junit.Test
public 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;
}
}
IMHO 이것은 훨씬 더 읽기 쉽습니다.
people.forEach(person -> Assert.assertThat(person.getGender()), Is.is("male"));
ReferenceURL : https://stackoverflow.com/questions/28860135/is-there-a-hamcrest-for-each-matcher-that-asserts-all-elements-of-a-collection
반응형
'IT이야기' 카테고리의 다른 글
Spring과 Spring MVC 프레임워크의 차이점 (0) | 2021.10.07 |
---|---|
Spring Boot: 뚱뚱한 항아리가 있는 임의의 디렉토리에서 외부 application.properties 파일을 사용 (0) | 2021.10.07 |
Redux 사용 (0) | 2021.10.07 |
새로운 FragmentTransaction commitNow()는 내부 작동 원리 (0) | 2021.10.07 |
TypeScript - 올바른 버전의 setTimeout 사용(노드 대 창) (0) | 2021.10.07 |