그게 쉬운 일이 될거야,하지만 난 둘 다 libpath 내 수업 경로에 포함되어 있다면, 그들과 어떤 하나를 사용하는 차이점을 찾을 수 없습니까?Mockito의 Matcher 대 Hamcrest의 Matcher?
답변
Hamcrest 정규 방법은 Matcher<T>
돌아가 Mockito 예를 들어, 그래서 반환 T. 정합 기 : org.hamcrest.Matcher<Integer>
의 인스턴스를 반환 org.hamcrest.Matchers.any(Integer.class)
및 org.mockito.Matchers.any(Integer.class)
이 Integer
의 인스턴스를 반환합니다.
즉, Matcher<?>
개체가 서명에서 예상되는 경우 (일반적으로 assertThat
호출시)에만 Hamcrest 매처를 사용할 수 있습니다. mock 객체의 메소드를 호출 할 때 expectations이나 verification을 설정할 때, Mockito matchers를 사용합니다. 예를 들어 (선명도에 대한 정규화 된 이름)
: 당신이 Mockito의 정규 표현을 필요로하는 컨텍스트에서 Hamcrest의 정규 표현을 사용하려면
@Test
public void testGetDelegatedBarByIndex() {
Foo mockFoo = mock(Foo.class);
// inject our mock
objectUnderTest.setFoo(mockFoo);
Bar mockBar = mock(Bar.class);
when(mockFoo.getBarByIndex(org.mockito.Matchers.any(Integer.class))).
thenReturn(mockBar);
Bar actualBar = objectUnderTest.getDelegatedBarByIndex(1);
assertThat(actualBar, org.hamcrest.Matchers.any(Bar.class));
verify(mockFoo).getBarByIndex(org.mockito.Matchers.any(Integer.class));
}
, 당신은 org.mockito.Matchers.argThat
정규 사용할 수 있습니다. 그것은 Hamcrest matcher를 Mockito matcher로 변환합니다. 따라서 double 값을 약간의 정밀도로 일치 시키려고한다고 가정합니다 (그다지 많지는 않음). 이 경우, 당신은 할 수 :
when(mockFoo.getBarByDouble(argThat(is(closeTo(1.0, 0.001))))).
thenReturn(mockBar);
그냥 지적을, 그 Mockito 2에있는' 그것은 Hamcrest와 함께 작동하는 과부하입니다. Matcher's는'MockitoHamcrest'로 옮겨졌습니다. [Mockito 2의 새로운 기능] (https://github.com/mockito/mockito/wiki/What%27s-new-in-Mockito-2#incompatible)에서는 "1.10의 호환되지 않는 변경 사항"섹션에서 이에 대해 설명합니다. –
- 1. Specs2 : Hamcrest matcher 사용
- 2. String replaceAll() 대 Matcher replaceAll() (성능 차이)
- 3. URL Regex Matcher (Idea)
- 4. Java Matcher 클래스
- 5. regexp에서의 Wierd 동작 Matcher
- 6. Java Matcher Digit 메서드
- 7. Java Regexp Matcher
- 8. OpenCV Matcher - std :: bad_alloc 예외
- 9. 사양 프레임 워크를 사용하는 Matcher [A]에서 Matcher [Iterable [A]]를 구성하는 방법
- 10. 출력 매개 변수에 대한 googlemock matcher
- 11. 모델의 백분율 속성을 테스트하는 RSpec Custom Matcher
- 12. JUnit Matcher # startsWith의 선언은 어디에 있습니까?
- 13. Java Matcher and Pattern : 왜 영원히 계속됩니까
- 14. Java Matcher 클래스의 PHP 포트가 있습니까?
- 15. 파일 확장명에 대한 스칼라 specs2 matcher
- 16. opencv matcher 잘못된 할당 + 잘못된 라이브러리 의존?
- 17. Hamcrest의 anything()이 컴파일되지 않습니다
- 18. matcher-list 인수는 zst zstyle 완료시 어떻게 작동합니까?
- 19. Pattern & Matcher 클래스를 사용하는 java의 패턴 일치 부여 문
- 20. Java의 Pattern 및 Matcher 클래스에 public 생성자가없는 이유는 무엇입니까?
- 21. XML 문서 일치를 수행하기위한 python hamcrest matcher 라이브러리가 있습니까?
- 22. Pattern과 Matcher 클래스를 사용하여 Java로 대화를 분할하는 방법은 무엇입니까?
- 23. Cucumber/Capybara - "Page Object"패턴을 사용하는 RSpec matcher 사용
- 24. Symfony2 : 치명적인 오류 : 'Knp \ Menu \ Matcher \ Voter \ VoterInterface'인터페이스가 없습니다.
- 25. Java 정규식 : Matcher 클래스에 의한 불필요한 "greedy"전략 피하기
- 26. Mockito의 @InjectMock annotation
- 27. java auto correct pattern-matcher - 주어진 세트에서 가장 유사한 항목은 무엇입니까?
- 28. 재귀 SamePropertyValues는 hamcrest의 정규 표현식
- 29. Grails/Groovy를 사용하는 Mockito의 버그
- 30. 왜이 코드는 Hamcrest의 hasItems를 사용하려고 시도하지 않습니까?
관련을 [? Mockito 일을 정합 할 방법] (http://stackoverflow.com/a/22822514/1426891) –