2012-08-22 2 views
3

해클레스트 후 Junit이로드되었는지 확인하는 것이 해결책이라는 것을 알고 있습니다. 나는 Intellij 프로젝트를 가지고 있는데, JUnit과 JMock과 hamcrest를 모두 포함하는 외부 라이브러리를 설정했다. 이 오류가 표시되지 않도록하려면 어떻게해야합니까?JMock- java.lang.NoSuchMethodError : org.hamcrest.Matcher.describeMismatch()

+0

사용중인 외부 라이브러리는 무엇입니까? 프로젝트에서 다른 곳의 유니폼 및/또는 Hamcrest가 있습니까? – Kkkev

답변

2

라이브러리 (jar)의 호환성을 확인해야합니다. jar 내부의 클래스가 다른 jar에있는 클래스의 메소드를 사용하고이 사용 된 메소드가 새로 추가되고 이전 jar를 사용하고 있다면 확실히 java.lang.NoSuchMethodError이됩니다.

0

junit.jar 대신 junit-dep.jar (hamcrest 종속성을 포함하지 않음!)을 가져와야합니다. 대형 프로젝트에서 Maven을 사용하는 경우, hamcrest 및 junit 수입을 모두 없애기 위해 많은 노력을 기울일 수 있습니다.

그것의 JUnit의 곧 출시가 호환 될 것이라고 도움이 될 hamcrest 1.3

5
  1. 있는 JUnit : JUnit을 : 4.11 이전 JUnit을 대체 JUnit을-출발을 JUnit을 4.11가 org.hamcrest을 포함
  2. : hamcrest -core : 의존성으로서 1.3 jar
  3. 테스트에서 명시 적 Hamcrest matchers를 사용하려면 org.hamcrest : hamcrest-library : 1.3을 포함하십시오.
  4. org.mockito : mockito-all : 1.9.x - Hamcrest의 OLD 버전을 포함하며 종속성이 아닌 jar 파일로 래핑됩니다. 이것은 범인입니다. JUnit을, hamcrest 및 mockito 항아리의 모든 이적 버전을 제어하기 위해 모든 테스트 종속성 전에
  5. 사용 Maven의 dependencyManagement 섹션 1.3 : hamcrest 코어 :을 (https://code.google.com/p/mockito/issues/detail?id=459)
  6. 는 org.hamcrest 넣습니다. 예를 들어, 스프링 통합 테스트에는 transitively mockito-all : 1.9.0이 포함됩니다.
관련 문제