如何在AndroidStudio中为Android库添加androidTest资源

11

我创建了一个androidLibrary项目,其中包含一些Volley请求类,并且想为其中一些请求编写单元测试。

我已经做过这件事情很多次了,虽然会在尝试几次后有所进展,但从来没有一次就成功过。

如果我尝试通过AndroidStudio进行操作

右键单击项目->新建->Android资源目录

你可以在sourceSets“main”、“debug”和“release”之间选择。没有androidTest选项。

如果我手动尝试添加以下文件夹[moduleName]/src/androidTest/res/raw并在里面放置一个文件(比如说image.jpg),我将无法通过 R.raw.image 引用它。 实际上,在我的测试中我根本无法访问R.raw

我还尝试了Build->rebuild project或Build->clean,但都没有成功。

在其他项目中,我有一个my.app.namespace.R和一个my.app.namespace.test.R,它们保存所有测试资源。

因此,我的问题是:我需要怎么做才能向我的androidTest中添加一个res文件夹,使其可通过 R.[folder].[resId] 访问?

在添加文件后,我是否错过了重要的步骤(例如显式告诉gradle)?

因为在我的build.gradle中添加类似于这样的标签似乎也没有任何区别:

android {
    sourceSets {
        androidTest {
            java.srcDirs = ['src/androidTest/java']
            res.srcDirs = ['src/androidTest/res']
        }
    }
}

如果有影响的话,我使用的是:

  • Android Studio 3.1.2
  • gradle-wrapper 4.4
  • minSdkVersion 19
  • targetSdkVersion 27
2个回答

4

通过Michael Krussel的更新的帮助,我发现了问题的所在。

Android Studio没有自动编译my.app.namespace.test包。你只需要第一次运行测试,忽略可能出现的AndroidStudio错误。

第一次运行后,您就可以访问整个test命名空间(包括*.test.R类)

不需要额外的gradle配置(如上面的sourceSets)!


3
你如何访问这些资源呢?我在 Android 测试字符串中遇到了“Resources$NotFoundException”的错误。 - Nicolas

0

如果遇到类似错误,在尝试重新构建/运行已插桩测试之前,我建议先使缓存失效 - 至少这对我在Android Studio 2022.1.1 Patch 2上有所帮助。

要完成此操作,请导航至文件 -> 使缓存失效...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接