문제

나는 상대적으로 매칭 자에 새롭다. 나는 함께 놀고있다 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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top