如何在Android Studio中为Android Library添加androidTest资源
解决Android Library中androidTest资源无法访问的问题
我来帮你搞定这个Android Library里androidTest资源访问的问题,结合你给出的环境(Android Studio 3.1.2、Gradle 4.4、minSdk 19、targetSdk 27),一步步来解决:
1. 捋顺Gradle的androidTest sourceSet配置
你之前加的配置方向是对的,但可能因为Library默认配置的覆盖或者细节问题没生效。你可以在模块级的build.gradle(不是项目根目录的那个)里简化成下面这样:
android { // 保留你原本的compileSdk、minSdk等配置... sourceSets { androidTest { java.srcDir 'src/androidTest/java' res.srcDir 'src/androidTest/res' // 如果需要测试assets,也可以加上这行 // assets.srcDir 'src/androidTest/assets' } } }
配置完之后,一定要点Android Studio右上角的「Sync Project with Gradle Files」按钮——这步比单纯Clean/Rebuild重要多了,能让Gradle重新识别你的sourceSet配置。
2. 让Android Studio认出来测试资源目录
如果你手动建了src/androidTest/res/raw但AS没把它当测试资源目录,可以手动标记:
- 在Project视图里找到
src/androidTest/res目录 - 右键点它 → 选「Mark Directory as」→ 「Test Resources Root」
这样AS就会把这个目录下的资源编译到测试专用的R类里了。
3. 别引用错R类!
你提到其他项目里有my.app.namespace.test.R,这就是测试资源对应的R类!在你的androidTest代码里,必须引用这个测试专用的R类,而不是主模块的my.app.namespace.R:
// 错误:用了主模块的R,肯定找不到测试资源 import my.app.namespace.R; // 正确:用测试模块的R,才能访问raw下的image import my.app.namespace.test.R;
4. 最后验证一下
做完上面几步,按这个顺序操作确保生效:
- 先点「Build → Clean Project」清掉旧缓存
- 再点「Build → Rebuild Project」重新编译
- 跑一下你的测试代码,看看能不能正常拿到
R.raw.image
要是还不行,再查这几点
- 确认测试类是放在
src/androidTest/java下的,不是test/java——后者是本地单元测试,根本访问不了Android资源 - 检查
image.jpg的文件名,不能有大写字母、空格或者特殊字符,得符合Android资源命名规则 - 看看AS的「Build Output」面板,有没有资源编译的错误提示,比如资源重复、命名不合法之类的
内容的提问来源于stack exchange,提问作者Rafael T
相关产品推荐
相关产品推荐

