Mockito无法Mock ServiceClient类问题求助(已尝试多方案)
Mockito无法Mock ServiceClient类的问题排查求助
环境详情
Java 11 Mockito core 4.3.1 Byte Buddy 1.12.7 Spring beans 5.3.20 Spring context 5.3.20
错误信息
test1_standardSubgraph() (com.x.HelperTest) org.mockito.exceptions.base.MockitoException: Mockito cannot mock this class: class com.x.ServiceClient. Mockito can only mock non-private & non-final classes. If you're not sure why you're getting this error, please report to the mailing list.
已尝试的操作
- 显式添加Byte Buddy依赖
- 确保除mockito-core外无其他依赖引入不同版本的Byte Buddy
- 确认Byte Buddy版本与Mockito v4.3.1要求一致
- 确认未通过其他依赖(如spring-boot-starter-test)间接引入Mockito,且依赖中未使用spring-boot-starter-test
- 尝试降级Mockito主版本,但仍无效果
相关代码与配置
ServiceClient.java
public class ServiceClient { @Autowired public ServiceClient(ClientFactory factory) { ... } }
WORKSPACE配置
JUNIT_JUPITER_VERSION = "5.8.2" JUNIT_PLATFORM_VERSION = "1.9.1" JACKSON_CORE_VERSION = "2.14.1" GUAVA_VERSION = "31.1-jre" APACHE_COMMONS_LANG3_VERSION = "3.12.0" APACHE_COMMONS_LANG_VERSION = "2.6" JETBRAINS_ANNOTATIONS_VERSION = "23.0.0" LOMBOK_VERSION = "1.18.24" SPRING_VERSION = "5.3.20" KOTLIN_REFLECT_VERSION = "1.7.21" FINDBUGS_VERSION = "3.0.2" MOCKITO_VERSION = "3.2.0" maven_install( artifacts = [ "com.fasterxml.jackson.core:jackson-databind:%s" % JACKSON_CORE_VERSION, "com.google.guava:guava:%s" % GUAVA_VERSION, "org.apache.commons:commons-lang3:%s" % APACHE_COMMONS_LANG3_VERSION, "commons-lang:commons-lang:%s" % APACHE_COMMONS_LANG_VERSION, "org.jetbrains:annotations:%s" % JETBRAINS_ANNOTATIONS_VERSION, "org.projectlombok:lombok:%s" % LOMBOK_VERSION, "org.springframework:spring-beans:%s" % SPRING_VERSION, "org.springframework:spring-context:%s" % SPRING_VERSION, "org.jetbrains.kotlin:kotlin-reflect:%s" % KOTLIN_REFLECT_VERSION, "org.junit.platform:junit-platform-launcher:%s" % JUNIT_PLATFORM_VERSION, "org.junit.platform:junit-platform-reporting:%s" % JUNIT_PLATFORM_VERSION, "org.junit.jupiter:junit-jupiter-api:%s" % JUNIT_JUPITER_VERSION, "org.junit.jupiter:junit-jupiter-params:%s" % JUNIT_JUPITER_VERSION, "org.junit.jupiter:junit-jupiter-engine:%s" % JUNIT_JUPITER_VERSION, "com.google.code.findbugs:jsr305:%s" % FINDBUGS_VERSION, "org.mockito:mockito-core:%s" % MOCKITO_VERSION, "org.mockito:mockito-inline:%s" % MOCKITO_VERSION, "org.mockito:mockito-junit-jupiter:%s" % MOCKITO_VERSION, ], repositories = [ "https://repo1.maven.org/maven2", ], )
BUILD配置
java_test_suite( name = "lib-tests", srcs = glob(["src/test/java/**/*.java"]), runner = "junit5", test_suffixes = ["Test.java"], runtime_deps = JUNIT5_DEPS, deps = [ "//:lib", "@maven//:org_jetbrains_annotations", "@maven//:org_springframework_spring_beans", "@maven//:org_springframework_spring_context", artifact("org.jetbrains.kotlin:kotlin-reflect"), artifact("org.junit.jupiter:junit-jupiter-api"), artifact("org.junit.jupiter:junit-jupiter-params"), artifact("org.mockito:mockito-core"), artifact("org.mockito:mockito-inline"), artifact("org.mockito:mockito-junit-jupiter"), ], )
测试代码报错位置
@BeforeEach void setUp() { MockitoAnnotations.initMocks(this); // HERE }
恳请各位帮忙排查问题原因并提供解决方案。
内容的提问来源于stack exchange,提问作者90abyss
相关产品推荐
相关产品推荐

