Hamcrest와 함께 여러 올바른 결과 (타이터가 있습니까?)
문제
나는 상대적으로 매칭 자에 새롭다. 나는 함께 놀고있다 Hamcrest 주니와 나는 그것을 좋아한다.
여러 선택 중 하나가 맞다는 방법이 있습니까?
같은 것
assertThat( result, is( either( 1, or( 2, or( 3 ) ) ) ) ) //does not work in hamcrest
내가 테스트하는 방법은 컬렉션의 한 요소를 반환합니다. 목록에는 여러 후보자가 포함될 수 있습니다. 내 현재 구현은 첫 번째 히트를 반환하지만 요구 사항은 아닙니다. 가능한 후보자가 반환되면 테스트 케이스가 성공하기를 원합니다. 이것을 Java로 어떻게 표현 하시겠습니까?
(나는 Hamcrest-alternatives에 개방되어 있습니다)
해결책
assertThat(result, anyOf(equalTo(1), equalTo(2), equalTo(3)))
에서 Hamcrest 튜토리얼:
Anyof- 일치하는 경우 매치가 일치하는 경우 일치하는 경우 일치하는 경우 단락 (Java ||)
또한보십시오 Javadoc.
또한, 당신은 자신의 경기자를 쓸 수 있습니다.
다른 팁
마르코스는 옳지 만 다른 옵션도 있습니다. 우선, 거기 ~이다 어느/또는 :
assertThat(result, either(is(1)).or(is(2)));
그러나 두 개 이상의 항목이 있다면 아마도 다루기 어려울 것입니다. 또한 타자기는 때때로 그런 것들에 이상해집니다. 당신의 경우에 당신은 할 수 있습니다 :
assertThat(result, isOneOf(1, 2, 3))
또는 배열/컬렉션에 이미 옵션이있는 경우 :
assertThat(result, isIn(theCollection))
또한보십시오 Javadoc.
제휴하지 않습니다 StackOverflow