Java 升级到 2.7 ClassNotFoundException 后:运行测试时的 org.mockito.exceptions.Reporter
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/43940857/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
after upgrade to 2.7 ClassNotFoundException: org.mockito.exceptions.Reporter when run test
提问by LunaVulpo
I try to set up junit, mokito and powermock together but when I ran a test I get ClassNotFoundException :(
我尝试将 junit、mokito 和 powermock 设置在一起,但是当我运行测试时,我得到 ClassNotFoundException :(
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'`
I also tried adding cglib by adding:
我还尝试通过添加以下内容来添加 cglib:
testCompile 'cglib:cglib:3.1'
testCompile 'cglib:cglib-nodep:3.1'
but without of lack.
但并不缺乏。
could any one share working configuration or point me out what is wrong.
任何人都可以分享工作配置或指出我出了什么问题。
My stacktrace when I ran a test:
我运行测试时的堆栈跟踪:
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
采纳答案by SpyZip
That's what worked for me:
这就是对我有用的:
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'
using Mockito2 fixed the problem for me.
使用 Mockito2 为我解决了这个问题。
回答by LunaVulpo
PowerMock 1.6isn't compatible with Mockito 2.7(take a look at https://github.com/powermock/powermock/wiki/Mockito#supported-versions)
PowerMock 1.6与Mockito 2.7不兼容(查看https://github.com/powermock/powermock/wiki/Mockito#supported-versions)
You should use PowerMock 1.7.0RC2(or 1.7.0RC3if 1.7.0RC2doesn't work), and also use powermock-api-mockito2instead of powermock-api-mockito.
您应该使用PowerMock 1.7.0RC2(或1.7.0RC3,如果1.7.0RC2不起作用),并且还使用powermock-api-mockito2而不是powermock-api-mockito。
回答by kosiara - Bartosz Kosarzycki
I'm using Kotlin 1.2.61
/mockito 2.15
and powermock 1.7.0RC2
DID NOTwork me. The set of dependencies that did the trick for me is:
我使用科特林1.2.61
/的Mockito2.15
和powermock1.7.0RC2
没有工作我。对我有用的一组依赖项是:
dependencies {
testImplementation "junit:junit:4.12"
testImplementation "org.mockito:mockito-core:2.15.0"
testImplementation "io.kotlintest:kotlintest:2.0.7"
testImplementation 'org.powermock:powermock-module-junit4-rule:2.0.0-beta.5'
testImplementation 'org.powermock:powermock-core:2.0.0-beta.5'
testImplementation 'org.powermock:powermock-module-junit4:2.0.0-beta.5'
testImplementation 'org.powermock:powermock-api-mockito2:2.0.0-beta.5'
}
回答by SebastienRieu
You should use PowerMock 1.7.+ (it's always better to use the last version), and also use powermock-api-mockito2instead of powermock-api-mockito.
您应该使用 PowerMock 1.7.+(使用最新版本总是更好),并且还使用powermock-api- mockito2而不是 powermock-api-mockito。
testImplementation "org.powermock:powermock-api-mockito2:${versions.powermock}"