You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 15:00:45