单元测试java。lang.NoSuchMethodError:org。莫基托。内部的跑步者。Runner工厂。createStrict(Ljava/lang/Class;)Lorg/mockito/internal/Runner/InternalRunner;
我正在使用Mockito jar为Groovy编写Junit测试用例,但它给了我以下异常:
java.lang.NoSuchMethodError: org.mockito.internal.runners.RunnerFactory.createStrict(Ljava/lang/Class;)Lorg/mockito/internal/runners/InternalRunner;
at org.mockito.junit.MockitoJUnitRunner.<init>(MockitoJUnitRunner.java:152)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:84)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
下面是我拥有的jar列表:
cglib-nodep-2.2.2
javassist-3.19.0-GA
junit-4.12
mockito-all-1.10.19
objenesis-2.5
powermock-mockito-1.6.2-full
下面是我的代码。我增加了必要的进口:
package test.service
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.InjectMocks
import org.mockito.Mock
import org.mockito.junit.MockitoJUnitRunner
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
class SyncImplTest {
@InjectMocks
SyncThreatImpl fixture;
@Mock
RpcConfigurationLoader rpcConfigurationLoader
@Test
public void testRpcConfig(){
RpcApiInfo rpcApiInfo = new RpcApiInfo();
when(rpcConfigurationLoader.loadConfiguration()).thenReturn(rpcApiInfo)
}
}
# 1 楼答案
出于某种原因,您的测试套件试图从Mockito版本中包含的
org.mockito.junit
加载MockitoJunitRunner
2.O.在该版本中,行:正在这样做:
这里加载的RunnerFactory来自版本1。在Mockito 2中引入了x作为
createStrict
。十,因此,通过pom依赖关系树,找到隐式添加Mockito 2的工件。x依赖于您的项目并将其排除
或者。。作为一种解决方法,您可以使用以下替代
@RunWith(MockitoJUnitRunner.class)
:你也可以查看这个Mockito cheat sheet来保存所有的标准
# 2 楼答案
在Mockito 1.10.19(从2014年开始)中,没有类
org.mockito.junit.MockitoJUnitRunner
。这是在第2章后面介绍的。x、 如果你真的想使用1.10.19,你可能应该使用正确的类org.mockito.runners.MockitoJUnitRunner
,这样就可以了但我强烈建议使用更新的Mockito版本
mockito-all
不再是可以依赖的正确工件。和2。这个人工制品不再被保存# 3 楼答案
问题在于你的进口。 您的导入不包括导入runner替换以下导入
与