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

使用RobolectricTestRunner测试时遇Shadow Package Parser相关RuntimeException

Robolectric测试中ShadowPackageParser引发的空指针异常解决方法

问题场景

测试类配置:

@RunWith(RobolectricTestRunner.class)
@Config(application = RobolectricTestApp.class)
public class YourRoomsActivityTest {
    @Test
    public void test_dummy() {
        // Required until real tests are added back
    }
...
}

抛出的异常栈:

java.lang.RuntimeException at ShadowPackageParser.java:69
Caused by: android.content.pm.PackageParser$PackageParserException at PackageParser.java:1353
Caused by: java.lang.NullPointerException at CppAssetManager2.java:689

解决思路

  • 匹配Robolectric与Android SDK版本
    该异常多因版本不兼容导致。确认Robolectric版本支持当前项目的targetSdk级别,比如targetSdk=33对应Robolectric 4.12及以上版本。
  • 清理项目缓存
    本地缓存损坏可能引发资源加载异常:
    1. 执行./gradlew clean(Android项目)
    2. 删除项目根目录下的.gradle、build文件夹
    3. 重新同步项目后运行测试
  • 排查自定义测试Application
    若RobolectricTestApp有自定义资源加载逻辑,可能在测试环境未初始化完全。可临时替换为默认测试Application验证:
    @Config(application = com.android.test.runner.MonitoringInstrumentation.TestApplication.class)
    
  • 关闭测试环境的资源压缩
    开启minifyEnabled或shrinkResources可能导致Robolectric无法解析资源。在debug构建中关闭:
    android {
        buildTypes {
            debug {
                minifyEnabled false
                shrinkResources false
            }
        }
    }
    
  • 检查assets目录资源
    assets目录下损坏、格式错误的文件(如XML、JSON)会导致AssetManager解析失败。排查新增或修改的assets文件,修复或移除异常文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:45:34