java.lang.IollegalStateException:无法初始化插件:MockMaker



尝试在AS.上运行检测测试

遇到此错误:

java.lang.IllegalStateException:无法初始化插件:interface org.mockito.plugins.LockMaker网址:org.mockito.internal.configuration.plugins.PluginLoader$1.ioke(PluginLoader.java:66)位于java.lang.reflect.Proxy.invoke(Proxy.java:393)位于$Proxy4.isTypeMockable(未知源)

ExampleInstrumentedTest.java

@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {

@Mock
Context context;

@Before
public void init(){
MockitoAnnotations.initMocks(this);
}
@Test
public void testDisabledFlag()  {
ChanceValidator chanceValidator  = new ChanceValidator(context);
Validator.ValidationResult result = chanceValidator.validate(2);
assertEquals(result, Validator.ValidationResult.NO_ERROR);
}
}

build.gradle
apply plugin: 'com.android.application'
android{
..
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

testOptions {
unitTests.returnDefaultValues = true
}
}


dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
// Unit testing dependencies
testCompile 'junit:junit:4.12'
// Set this dependency if you want to use the Hamcrest matcher library
testCompile 'org.hamcrest:hamcrest-library:1.3'
// more stuff, e.g., Mockito
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.1.0'
compile project(':mortar')
compile project(':mockito-core-2.6.6')
}


更新:评论行之后-

MockitoAnnotations.intMocks(this);

它正在构建良好(没有例外),但上下文模拟现在为空。

这在我的案例中起作用:

dependencies { 
def mockito_version = '2.7.1' // For local unit tests on your development machine
testCompile "org.mockito:mockito-core:$mockito_version" // For instrumentation tests on Android devices and emulators
androidTestCompile "org.mockito:mockito-android:$mockito_version"
}

我没有评论initMocks

在我的案例中,我正在处理一个不使用maven构建系统的项目。这就是对我有效的方法。

导航到mockito的maven repo(使用v2.26):https://mvnrepository.com/artifact/org.mockito/mockito-core/2.26.0.我下载了这个罐子。在底部的同一页上,我查找了依赖项。对于mockito 2.26.0,这些依赖项是:

  • Byte Buddy v.1.9.10(https://mvnrepository.com/artifact/net.bytebuddy/byte-buddy/1.9.10)
  • Byte Buddy Java Agent v1.9.10(https://mvnrepository.com/artifact/net.bytebuddy/byte-buddy-agent/1.9.10)
  • Obgenesis v2.6(https://mvnrepository.com/artifact/org.objenesis/objenesis/2.6)我下载了上述mockito依赖项的jar文件

在Eclipse中,我创建了一个包含四个jar文件的用户库,并将其添加到我的项目中。

NB:(创建库是可选的,您可以直接将jar添加到项目构建路径中)

希望这能帮助到别人。

不要显式包含mockito,让powermock来获取它所需要的。

在为"mockito core"添加可传递依赖项后,我解决了这个问题。我在eclipse中遇到了这个问题。我使用了"mockito core 3.8.0"one_answers"mockito-junit jupiter 3.8.0"。起初,我试图通过在Project/Java构建路径中将JRE更改为JDK来解决这个问题(许多人已经将其作为解决方案发布),但这并没有解决问题。然后,我显式地为"mockito core 3.8.0"添加了以下3个可传递的依赖项,它成功了!

1. net.bytebuddy » byte-buddy  v1.10.20
2. net.bytebuddy » byte-buddy-agent  v1.10.20
3. org.objenesis » objenesis  v3.1

(https://mvnrepository.com/artifact/org.mockito/mockito-core/3.8.0-参见已编译的依赖项)

我在一个有很多人的大项目中使用Quarkus。

我们的大多数微服务都使用这种依赖版本

<net.bytebuddy.version>1.12.9</net.bytebuddy.version>

使用了一个微服务:

<net.bytebuddy.version>1.11.0</net.bytebuddy.version>

这与我们的不兼容

<artifactId>quarkus-junit5-mockito</artifactId>

当我在一个资源上添加更多的测试时,我得到了这个问题的错误。

我把bytebuddy改成了1.12.9,mockito起了作用。

请确保您的bytbyddy版本与您的mockito版本兼容。

将其中任何一个更新为彼此兼容。

尝试使用最新版本的junit。使用junit版本4.2&没有字节好友jar我遇到了这个问题。使用junit 4.13.2帮助我解决了这个问题。

相关内容

  • 没有找到相关文章

最新更新