Mockito 4.6.1不适合Springboot
当我从Eclipse运行JUNIT测试时,一切都通过了,但是当我从Gradle任务中运行测试时,这实际上只是一个测试任务,它会失败以下错误消息:
java.lang.IllegalStateException at PluginLoader.java:88
Caused by: java.lang.IllegalStateException at DefaultMockitoPlugins.java:85
Caused by: java.lang.reflect.InvocationTargetException at NativeConstructorAccessorImpl.java:-2
Caused by: org.mockito.exceptions.base.MockitoInitializationException at Reporter.java:1131
Caused by: java.lang.NoClassDefFoundError at SubclassInjectionLoader.java:34
Caused by: java.lang.ClassNotFoundException at BuiltinClassLoader.java:581
这是我的Gradle插件和依赖项:
plugins {
id 'java-library'
id 'project-report'
id 'org.springframework.boot' version '2.6.8'
}
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'maven-publish'
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', {
exclude module: "spring-boot-starter-jetty"
}
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-actuator'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-cache'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-security'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc'
implementation group: 'org.springframework', name: 'spring-oxm', version: '5.3.20'
implementation group: 'org.eclipse.persistence', name: 'org.eclipse.persistence.moxy', version: '2.7.9'
implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1'
implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.9'
implementation group: 'org.liquibase', name: 'liquibase-core', version: '4.8.0'
implementation group: 'javax.cache', name: 'cache-api'
implementation group: 'org.ehcache', name: 'ehcache'
implementation group: 'org.apache.commons', name: 'commons-text', version: '1.9'
implementation group: 'net.iharder', name: 'base64', version: '2.3.9'
implementation group: 'org.freemarker', name: 'freemarker', version: '2.3.31'
//implementation group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: '9.15.2'
//implementation group: 'org.apache.cxf', name: 'cxf-rt-rs-security-jose', version: '3.4.5'
implementation group: 'org.apache.httpcomponents', name: 'httpcore', version: '4.4.15'
implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.13', {
exclude module: "commons-codec:commons-codec"
}
implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '5.2.2', {
exclude module: "commons-codec:commons-codec"
}
implementation group: 'commons-codec', name: 'commons-codec', version: '1.15'
implementation group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2'
implementation group: 'commons-io', name: 'commons-io', version: '2.11.0'
implementation group: 'commons-cli', name: 'commons-cli', version: '1.5.0'
implementation group: 'xerces', name: 'xercesImpl', version: '2.12.2'
testImplementation group: 'com.h2database', name: 'h2'
testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', {
exclude group: "org.junit.jupiter"
}
testImplementation group: 'org.springframework.security', name: 'spring-security-test'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.8.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
testImplementation group: 'org.hamcrest', name: 'hamcrest', version: '2.2'
testImplementation group: 'org.mockito', name: 'mockito-core', version: '4.6.1'
testImplementation group: 'org.mockito', name: 'mockito-junit-jupiter', version: '2.23.0'
testRuntimeOnly group: 'org.junit.platform', name: 'junit-platform-commons', version: '1.8.2'
testImplementation group: 'org.junit.vintage', name: 'junit-vintage-engine', {
exclude module: "org.hamcrest:hamcrest-core"
}
compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.22'
testImplementation group: 'org.projectlombok', name: 'lombok', version: '1.18.22'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.22'
annotationProcessor 'org.projectlombok:lombok:1.18.22'
}
如果我删除,则tistimplementation组:“ org.mockito',名称:“ operito-core”,版本:'4.6.1'
它成功运行,因此似乎某种程度上会导致问题,但不幸的是,我绝对需要。
我的项目中都有Junit 4和Junit 5测试。 @runwith(SpringRunner.Class)有一些测试,有些与@ExtendWith(MockItoextension.Class)注释有一些测试。我正在使用Java 11。
任何想法都受到欢迎!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可能会使用此插件。
应用插件:'io.spring.dependenty-management'
该插件将字节版本修复到1.11.22其中。
因此,根据无法初始化插件:接口org.mockito.plugins.mockmaker.mockmaker从4.4升级Mockito后。 0至4.5.0
您需要添加
以覆盖版本。
You probably use this plugin.
apply plugin: 'io.spring.dependency-management'
and this plugin fix the bytebuddy version to 1.11.22 where mockito 4.6.1 need 1.12.10.
So according to Could not initialize plugin: interface org.mockito.plugins.MockMaker after upgrading Mockito from 4.4.0 to 4.5.0
You need to add
To override the version.