2013-07-09 2 views
1

종속성이 JUnit 4.11이고 이행 종속성이 JMock 2.6.0-RC2인데,이 종속성은 JUnit-dep 4.4입니다. JUnit-dep의이 전이 종속성은 JUnit에 대한 로컬 내 설정의 설정보다 우선합니다. 재정의하면 JUnit 메서드를 호출하면 v4.11과 반대되는 v4.4에서 호출됩니다. JMockJUnit-dep에 대한 제외 항목을 추가해도 내 해결 된 종속성에는 영향을 미치지 않습니다.Maven 제외가 작동하지 않습니다.

참고 :JUnitJUnit-dep 따라서 다른를 생략하지 않는 하나의 사용, 별도의 artifactId들 수 있습니다.


이전 질문 : 규칙이 실행되지 않는 것처럼

내가 테스트를 실행할 때 아직 JUnit을의 ExpectedException 규칙 테스트를 실행하려고 시도하고 작동하지 JUnit을 주석, 그것은 나타납니다. 아래 코드에서 Exception은 규칙이없는 경우 예상대로 시험을 통과하고 실패합니다.

최근에 내 프로젝트의 Maven 종속성을 4.3.1에서 4.11로 변경했습니다. 나는 또한 나의 작업 공간을 깨끗하게 만들었다. 이 문제를 해결하기 위해 어떤 단계를 밟아야합니까? Maven의 trasitive 의존성이 주자를 혼동시킬까요? 4.11로 실행 중임을 어떻게 알 수 있습니까?

@Rule 
public ExpectedException thrown= ExpectedException.none(); 

@Test 
public void throwsNullPointerException() { 
    thrown.expect(NullPointerException.class); 
    throw new NullPointerException(); 
} 

편집 :

내가 도움이된다면 알고 있지만 내 클래스의 상단에 @RunWith(BlockJUnit4ClassRunner.class)를 추가하는 것은이 날 도착하지 않습니다

java.lang.NoSuchFieldError: NULL 
    at org.junit.runners.ParentRunner.<init>(ParentRunner.java:57) 
    at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:57) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at org.junit.internal.requests.ClassRequest.buildRunner(ClassRequest.java:33) 
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:28) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:32) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:41) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:31) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 

편집 :

Eclipse에서 m2e를 통한 종속성 확인 : 종속성 계층 탭을 확인할 때 I pher 1 해결 된 종속성 (JUnit의 경우) : 4.11 및 multiple (4.11과의 충돌의 경우 생략 됨) 버전이 왼쪽에 있습니다. 또한 해결 된 종속성은 junit-dep 4.4에 대해 jmock-junit4: 2.6.0-RC2이지만으로 표시됩니다.이 종속성을 제외 (Right-click + Exclude Maven Artifact...)로 표시했습니다. 또한 JMock 자체는 JMock 2.1.0에 대한 호출과 충돌하여 생략 된 것으로 표시됩니다.

편집 : Ctrl+Shift+T RunWith 2 버전은 제외에도 불구하고 4.4 & 4.11을 보여줍니다.

편집 : 마지막으로 4.4 버전을 만드는 문제를 ommitting, junit-dep 4.10 "고정"문제의 종속성을 추가. 그러나 이것은 해법보다 해킹 된 것 같습니다.

+0

IDE 또는 Maven에서 테스트를 실행 하시겠습니까? 커스텀 JUnit 테스트 러너를 사용하고 있습니까? –

+0

Eclipse에서 실행 중입니다. 기본 주자. – AnthonyW

+0

Run Configuration에서 Eclipse가 JUnit 3 또는 JUnit4 러너 (Test runner : Test 탭의 필드)를 사용하는지 확인하십시오. –

답변

관련 문제