【问题标题】:Configuring res srcDirs for androidTest sourceSet为 androidTest sourceSet 配置 res srcDirs
【发布时间】:2014-10-30 21:21:13
【问题描述】:

我想包含仅为测试而编译的资源。

我的应用模块 build.gradle 文件中有以下内容:

android {

    ...

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

java srcDirs 路径是正确的,但是如果我尝试从androidTest中的res目录获取资源,却找不到资源。

我如何才能在 androidTest 目录中拥有仅用于测试的资源?

【问题讨论】:

    标签: java android android-testing build.gradle


    【解决方案1】:

    事实证明,您不需要更改默认 build.gradle 文件中的任何内容。

    诀窍在于自动生成的R.java 文件与androidTest 中的资源不同。

    如果您的主源集中某处的 R 的导入语句如下所示:

    import com.mycompany.myappname.R;
    

    测试文件中R 的导入语句应如下所示:

    import com.mycompany.myappname.test.R;
    

    【讨论】:

    • 也适用于我,但仅在 InstrumentationTestCase 中。如果在 AndroidTestCase 中使用它,资源 ID 是不一样的,我得到一个随机的 PNG 图像而不是我请求的 XML 文件。
    【解决方案2】:

    如果您有一个设置了applicationIdSuffix 的构建类型,那么您的src/androidTest/res 资源将位于<applicationId><applicationIdSuffix>.test.R !!!!!! 非常重要!!!

    applicationId "com.example.my.app"
    
    buildTypes {
        debug {
            applicationIdSuffix ".debug"
        }
    }
    

    src/androidTest/res 有一些资源吗?他们不在com.example.my.app.test!如果您正在运行调试版本,它们位于com.example.my.app.debug.test.R !!!!

    【讨论】:

    • 是什么让你认为 OP 设置了 applicationIdSuffix
    猜你喜欢
    • 2019-05-03
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多