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

如何在Android库项目的单元测试中使用JDK包?

解决Android库本地单元测试无法识别JDK完整类库的问题

Android Gradle插件默认会为本地单元测试的编译阶段绑定Android SDK对应的JDK类子集,而非直接使用主机环境的完整JDK。哪怕单元测试运行在主机JVM上,编译环节仍会受到Android API级别对JDK类的限制,像Java 11引入的java.net.http.HttpClient这类不在Android兼容子集里的类就会无法解析。

修复步骤(修改模块的build.gradle)

  1. 指定项目及单元测试使用的Java版本(需≥11,因为java.net.http是Java 11新增API):
android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
    }

    testOptions {
        unitTests {
            // 禁用Android资源依赖(若单元测试不需要),减少Android环境干扰
            includeAndroidResources = false
            // 显式添加JDK模块,确保编译时能识别java.net.http包
            all {
                jvmArgs '--add-modules', 'java.net.http'
            }
        }
    }
}
  1. 绑定对应版本的JDK工具链,确保单元测试使用主机上的完整JDK:
tasks.withType(Test) {
    javaLauncher = javaToolchains.launcherFor {
        languageVersion = JavaLanguageVersion.of(11)
    }
}
  1. 若仍有问题,排除单元测试依赖中可能限制JDK类的Android组件:
configurations.testImplementation {
    exclude group: 'com.android.support', module: 'support-annotations'
}

修改完成后同步Gradle,本地单元测试的编译阶段会使用指定的完整JDK版本,即可正常导入并使用java.net.http.HttpClient这类JDK原生类。

内容的提问来源于stack exchange,提问作者JBM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:42:22