Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.NoSuchMethodError:org.mockito.internal.RunnerFactory.createStrict(Ljava/lang/Class;)Lorg/mockito/internal/runners/InternalRunner;_Java_Unit Testing_Groovy_Junit_Mockito - Fatal编程技术网

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

java.lang.NoSuchMethodError:org.mockito.internal.RunnerFactory.createStrict(Ljava/lang/Class;)Lorg/mockito/internal/runners/InternalRunner;,java,unit-testing,groovy,junit,mockito,Java,Unit Testing,Groovy,Junit,Mockito,我正在使用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>(Mo

我正在使用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)
下面是我的代码。我增加了必要的进口:

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)
    }


}

出于某种原因,您的测试套件尝试从mockito版本>=2中包含的
org.mockito.junit
加载
MockitoJunitRunner
。O.在该版本中,行:

at org.mockito.junit.MockitoJUnitRunner.<init>(MockitoJUnitRunner.java:152)
您也可以查看此文件以保留所有标准。

在Mockito 1.10.19(从2014年开始)中,没有类
org.Mockito.junit.MockitoJUnitRunner
。这一点后来在2.x中介绍。如果您真的想使用1.10.19,您可能应该使用正确的类
org.mockito.runners.MockitoJUnitRunner
,然后该类就可以工作了


但我强烈建议使用更新的Mockito版本
mockito all
不再是可以依赖的正确工件。对于2.x,此人工制品不再维护。

问题在于您的导入。 您的导入不包括导入runner替换以下导入

org.mockito.junit.MockitoJUnitRunner


我用Mockito core 2.13.0替换了Mockito all,工作起来像个骗子。你的答案解决了我正在从事的bnd项目中的类似问题。感谢您您的解决方案解决了我们的问题,但提出“org.mockito.runners.MockitoJUnitRunner”是不推荐的警告。Maciej Kowalski的回答在没有任何警告的情况下解决了问题。
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));
    }
@Before
public void init() {
    MockitoAnnotations.initMocks(this);
}
org.mockito.junit.MockitoJUnitRunner
 org.mockito.runners.MockitoJUnitRunner;