首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >org.mockito.internal.runners.RunnerFactory.createStrict(Ljava/lang/Class;)Lorg/mockito/internal/runners/InternalRunner;:java.lang.NoSuchMethodError

org.mockito.internal.runners.RunnerFactory.createStrict(Ljava/lang/Class;)Lorg/mockito/internal/runners/InternalRunner;:java.lang.NoSuchMethodError
EN

Stack Overflow用户
提问于 2017-12-05 19:18:16
回答 4查看 33.1K关注 0票数 14

我正在使用Mockito jar为Groovy编写Junit测试用例,但它给了我以下异常:

代码语言:javascript
复制
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列表:

代码语言:javascript
复制
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

下面是我的代码。我已经添加了必要的导入:

代码语言:javascript
复制
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)
    }


}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-12-05 19:53:58

由于某些原因,您的测试套件试图从包含在Mockito版本>= 2.0中的org.mockito.junit加载MockitoJunitRunner。在该版本中,行:

代码语言:javascript
复制
at org.mockito.junit.MockitoJUnitRunner.<init>(MockitoJUnitRunner.java:152)

正在做这件事:

代码语言:javascript
复制
public MockitoJUnitRunner(Class<?> klass) throws InvocationTargetException {
        //by default, StrictRunner is used. We can change that potentially based on feedback from users
        this(new StrictRunner(new RunnerFactory().createStrict(klass), klass));
    }

这里加载的RunnerFactory来自1.x版本,因为createStrict是在Mockito2.x中引入的。

因此,浏览pom依赖关系树,找出哪些工件隐式地将Mockito 2.x依赖项添加到您的项目中,并将其排除。

或者..。作为一种解决办法,您可以使用以下命令代替@RunWith(MockitoJUnitRunner.class)

代码语言:javascript
复制
@Before
public void init() {
    MockitoAnnotations.initMocks(this);
}

您还可以查看此Mockito cheat sheet,以保持手头的所有标准。

票数 18
EN

Stack Overflow用户

发布于 2018-10-25 22:16:07

问题出在您的导入中。您的导入不包括导入运行器替换以下导入

代码语言:javascript
复制
org.mockito.junit.MockitoJUnitRunner

使用

代码语言:javascript
复制
 org.mockito.runners.MockitoJUnitRunner;
票数 13
EN

Stack Overflow用户

发布于 2017-12-05 19:57:49

在Mockito1.10.19(来自2014)中,没有org.mockito.junit.MockitoJUnitRunner类。这是后来在2.x中引入的。如果你真的想使用1.10.19,你可能应该使用正确的类org.mockito.runners.MockitoJUnitRunner,这样就可以工作了。

但我强烈建议使用更新的Mockito版本。mockito-all已经不再是可以依赖的合适工件了。在2.x版本中,这个工件不再被维护。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47652324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档