gradle java.lang.IllegalStateException:无法初始化插件:模拟制作者

cetgtptt  于 2023-01-26  发布在  Java
关注(0)|答案(5)|浏览(151)

正在尝试对AS运行检测测试。
遇到此错误:
java.lang.IllegalStateException:无法初始化插件:接口组织. mockito.插件. MockMaker位于组织. mockito.内部.配置.插件.插件加载器$1.调用(插件加载器. java:66)位于java. lang.反射.代理.调用(代理. 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);
        }
       }

构建版本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')
    }
    • 更新:**注解行之后-

Mockito注解. init模拟(这个);
它构建良好(无异常),但上下文模拟现在为空。

d8tt03nd

d8tt03nd1#

工作时间:

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

无需注解initiMocks

vh0rcniy

vh0rcniy2#

在我的例子中,我正在做一个没有使用maven构建系统的项目,所以这就是我所做的。
导航到mockito的maven repo(使用v2.26):https://mvnrepository.com/artifact/org.mockito/mockito-core/2.26.0。我下载了jar。在同一页的底部,我查找了依赖项。对于mockito 2.26.0,这些依赖项是:

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

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

希望这能帮到什么人。

js4nwp54

js4nwp543#

不要显式包含mockito,让powermock拉入它所需要的内容。

d5vmydt9

d5vmydt94#

在为“mockito-core”添加可传递依赖项后,我解决了这个问题。我在Eclipse中遇到过这个问题。我使用“mockito-core 3.8.0”和“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-请参阅编译的依赖项)

wsxa1bj1

wsxa1bj15#

我正在一个大项目中使用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就可以工作了。
确保你的bytebyddy版本与你的mockito版本兼容。
更新了其中一个,使其相互兼容。

相关问题