2017-05-12 17 views
13

tôi cố gắng thiết lập junit, mokito và powermock cùng nhau nhưng khi tôi chạy một thử nghiệm tôi nhận được ClassNotFoundException :(sau khi nâng cấp lên 2,7 ClassNotFoundException: org.mockito.exceptions.Reporter khi chạy thử nghiệm

testCompile 'junit:junit:4.12' 
testCompile 'org.mockito:mockito-core:2.7.22' 
androidTestCompile 'org.mockito:mockito-core:2.7.22' 
androidTestCompile "org.mockito:mockito-android:2.7.22" 

testCompile 'org.robolectric:robolectric:3.3.2' 
testCompile 'org.hamcrest:hamcrest-core:1.3' 

testCompile 'org.powermock:powermock-core:1.6.6' 
testCompile 'org.powermock:powermock-module-junit4:1.6.6' 
testCompile 'org.powermock:powermock-module-junit4-rule:1.6.6' 
testCompile 'org.powermock:powermock-api-mockito:1.6.6' 
testCompile 'org.powermock:powermock-classloading-xstream:1.6.6'` 

Tôi cũng thử thêm cglib bằng cách thêm:.

testCompile 'cglib:cglib:3.1' 
testCompile 'cglib:cglib-nodep:3.1' 

nhưng không thiếu

thể bất kỳ cấu hình làm việc một phần hoặc điểm tôi ra gì là sai

0.123.516.

stacktrace của tôi khi tôi chạy một thử nghiệm:

Exception in thread "main" java.lang.NoClassDefFoundError: org/mockito/exceptions/Reporter 
    at sun.reflect.GeneratedSerializationConstructorAccessor5.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.newInstance(SunReflectionFactoryInstantiator.java:48) 
    at org.powermock.reflect.internal.WhiteboxImpl.newInstance(WhiteboxImpl.java:251) 
    at org.powermock.reflect.Whitebox.newInstance(Whitebox.java:139) 
    at org.powermock.api.extension.reporter.AbstractMockingFrameworkReporterFactory.getInstanceForClassLoader(AbstractMockingFrameworkReporterFactory.java:41) 
    at org.powermock.api.extension.reporter.AbstractMockingFrameworkReporterFactory.create(AbstractMockingFrameworkReporterFactory.java:35) 
    at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.getMockingFrameworkReporter(JUnit4TestSuiteChunkerImpl.java:140) 
    at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:119) 
    at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53) 
    at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:59) 
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137) 
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117) 
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42) 
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:262) 
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 
Caused by: java.lang.ClassNotFoundException: org.mockito.exceptions.Reporter 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:190) 
    at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass1(DeferSupportingClassLoader.java:77) 
    at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:67) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 21 more 

Trả lời

28

PowerMock 1,6 không tương thích với Mockito 2,7 (hãy nhìn vào https://github.com/powermock/powermock/wiki/Mockito#supported-versions)

Bạn nên sử dụng PowerMock 1.7.0RC2 (hoặc 1.7.0RC3 nếu 1.7.0RC2 không hoạt động) và cũng sử dụng powermock-api-mockito2 thay vì powermock-api-mockito.

+1

Sử dụng powermock-api-mockito2 đã sửa nó cho tôi. – flow2k

9

Đó là những gì làm việc cho tôi:

testCompile 'junit:junit:4.12' 
testCompile 'org.mockito:mockito-core:2.8.0' 
testCompile 'org.powermock:powermock-api-mockito2:1.7.0RC2' 
testCompile 'org.powermock:powermock-module-junit4:1.7.0' 
testCompile 'org.powermock:powermock-core:1.7.0' 
testCompile 'org.powermock:powermock-module-junit4-rule:1.7.0' 

sử dụng Mockito2 cố định các vấn đề đối với tôi.

+2

Cảm ơn, bạn đã cứu ngày của tôi. Cuối cùng, điều này làm việc cho tôi. – Rizwan

Các vấn đề liên quan