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

使用Robolectric 3.3.2测试Android应用时遇API27不支持错误求助

解决Robolectric不支持API Level 27的问题

你遇到的问题看起来有点矛盾——明明Gradle里配置了Robolectric 3.8,但错误却提示用的是不支持API27的3.3.2版本。这大概率是依赖冲突在搞鬼:你的项目里可能有其他依赖悄悄引入了旧版本的Robolectric,覆盖了你指定的3.8版本。

下面是一步步的解决方案:

1. 排查并修复依赖冲突

首先,在终端运行Gradle命令查看完整依赖树,找出旧版本Robolectric的来源:

./gradlew app:dependencies --configuration testCompileClasspath

(Windows系统替换为gradlew.bat app:dependencies --configuration testCompileClasspath)

在输出结果里搜索org.robolectric:robolectric,找到所有出现的版本。如果发现有3.3.2的引入,就在你的依赖声明里排除旧版本:

// 直接确保使用3.8版本,排除其他来源的Robolectric
testCompile("org.robolectric:robolectric:3.8") {
    exclude group: 'org.robolectric'
}

// 或者针对引入旧版本的第三方依赖单独排除,比如:
// testCompile("com.example:some-third-lib:1.0") {
//     exclude group: 'org.robolectric'
// }

2. 确保依赖配置生效

修改依赖后,重新同步Gradle,然后清理项目缓存避免残留问题:

./gradlew clean build --refresh-dependencies

3. 检查测试类与SDK配置

你的测试类里指定了@Config(sdk = 27),Robolectric 3.8确实支持API27,但要确保SDK管理器里已经下载了**Android 8.1 (API 27)**的SDK平台和对应系统镜像(Robolectric需要这些资源模拟Android环境)。

如果暂时不想处理依赖冲突,也可以临时降级适配:把测试类的sdk参数改成25(3.3.2支持的最高API级别),同时将compileSdkVersion降到25,但这只是权宜之计,不推荐长期使用。

4. 推荐升级到更高版本的Robolectric

Robolectric 3.8已经是比较旧的版本了,后续的4.x版本支持更高API级别,还修复了大量bug。如果项目允许,建议升级到最新稳定版:

// Gradle 4.1+推荐用testImplementation代替testCompile
testImplementation "org.robolectric:robolectric:4.12.1"

升级后,测试类的配置可以简化,Robolectric会自动适配你的compileSdkVersion,甚至可以省略sdk参数:

@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class)
public class TimeTable...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:27:50