2014-09-23 4 views
3

와 MethodNotFoundException DBUnit를 기반 JUnit 테스트 케이스를 실행, 나는 예외 다음다면이 : 같은Junit와 : PowerMock

java.lang.RuntimeException: Invoking the beforeTestMethod method on PowerMock test listener [email protected] failed. 
    at org.powermock.tests.utils.impl.PowerMockTestNotifierImpl.notifyBeforeTestMethod(PowerMockTestNotifierImpl.java:92) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:292) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282) 
    at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:84) 
    at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120) 
    at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34) 
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:118) 
    at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:102) 
    at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
    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) 
Caused by: org.powermock.reflect.exceptions.MethodNotFoundException: No method found with name 'assertNoAnnotations' with parameter types: [ java.lang.reflect.Field, [Ljava.lang.Class; ] in class org.powermock.api.mockito.internal.configuration.PowerMockitoInjectingAnnotationEngine. 
    at org.powermock.reflect.internal.WhiteboxImpl.throwExceptionIfMethodWasNotFound(WhiteboxImpl.java:1247) 
    at org.powermock.reflect.internal.WhiteboxImpl.findMethodOrThrowException(WhiteboxImpl.java:985) 
    at org.powermock.reflect.internal.WhiteboxImpl.doInvokeMethod(WhiteboxImpl.java:882) 
    at org.powermock.reflect.internal.WhiteboxImpl.invokeMethod(WhiteboxImpl.java:713) 
    at org.powermock.reflect.Whitebox.invokeMethod(Whitebox.java:401) 
    at org.powermock.api.mockito.internal.configuration.PowerMockitoInjectingAnnotationEngine.process(PowerMockitoInjectingAnnotationEngine.java:45) 
    at org.powermock.api.extension.listener.AnnotationEnabler.injectSpiesAndInjectToSetters(AnnotationEnabler.java:55) 
    at org.powermock.api.extension.listener.AnnotationEnabler.beforeTestMethod(AnnotationEnabler.java:50) 
    at org.powermock.tests.utils.impl.PowerMockTestNotifierImpl.notifyBeforeTestMethod(PowerMockTestNotifierImpl.java:90) 
    ... 18 more 

내 클래스 보인다. 이 이상한 예외에 대해서는 아무 설명도 찾을 수 없습니다. 어떤 생각이 든다면 알려주세요.

감사합니다.

답변

2

당신은 PowerMock과 Mockito의 호환되지 않는 버전을 사용한다고 생각합니다.

스택 트랙을 보면 PowerMockitoInjectingAnnotationEngine에 의해 예외가 발생하고이 클래스는 assertNoAnnotations 메서드를 찾을 수 없습니다.

Powermock의 최신 버전은 1.5.6입니다. 이제이 클래스의 src에서 PowerMock의 이전 버전 (1.4.12)을 살펴보면 assertNoAnnotations 메서드 호출이 처리되었음을 알 수 있습니다. 1.5 버전부터이 클래스는 이러한 호출을 사용하지 않습니다.

마지막 버전의 Mockito는 1.9.5입니다. 자, InjectingAnnotationEngine (PowerMockitoInjectingAnnotationEngine에 의해 확장 됨)의버전의 Mockito 버전을 보면, assertNoAnnotations 메소드가 지속된다는 것을 알 수 있습니다. 그리고, 1.9.5 버전에서 -이 방법은 사라졌습니다.

여러분이 사용하는 프레임 워크 버전을 업데이트하면이 오류를 제거 할 수 있다고 생각합니다.

+0

당신의 해결책이 도움이되었습니다. powermock과 mockito를 최신 버전으로 업데이트하여 문제를 해결했습니다. – user613114