【问题标题】:Android connected tests common code move to library moduleAndroid 连接测试常用代码移至库模块
【发布时间】:2017-07-19 06:50:29
【问题描述】:

我有 2 个项目模块:A、B 和一个库模块。两个项目都使用库。我在两个项目(UI Automator)中也有一些连接测试。该测试具有我想移至库的通用实用程序代码。我该怎么做?

我尝试过的。第一种方式:

  1. 将常用代码复制到库项目到src/androidTest/java/xxx 文件夹
  2. 添加到库 build.gradle UI automator 依赖项下 androidTestCompile
  3. 将以下内容添加到项目 build.gradle:

dependecies {
...
androidTestCompile project(path: ':library', configuration: "debug")
...
}

这会导致项目中的构建问题,因为据我了解,在构建调试配置期间未使用 src/androidTest 文件夹

第二种方式:

  1. 前两步是一样的

  2. 添加到库 build.gradle


task connectedTestsJars(type: Jar, dependsOn: "assembleXXXAndroidTest") {
    classifier = 'connectedTests'
    includes = ['com/**']
    from "$buildDir/intermediates/classes/androidTest/XXX"
}

configurations {
    connectedTestArtifact
}

artifacts {
    connectedTestArtifact connectedTestsJars
}
  1. 添加到项目 build.gradle

dependencies {
...
androidTestCompile project(path: ':library', configuration: "connectedTestArtifact")
...
}

这样所有编译都很好。由于缺少库中的资源,它在连接的测试运行时崩溃(它有很多来自两个项目的通用代码和资源) 据我了解,这是因为我只使用库中的源代码,但我需要使用 aar 文件(aar 添加 src/androidTest 内容?)。 在这种情况下,任务类型是什么?或者我应该在我的自定义任务中执行哪些操作以获取 aar 文件?其他方式?

我知道我可以将连接的测试公共代码移动到另一个(第二个)库模块并使用,但我想避免它以节省编译时间。 有什么方法可以保持当前的模块结构并将连接的测试公共代码移动到库模块?

【问题讨论】:

    标签: android gradle android-gradle-plugin


    【解决方案1】:

    我确实找到了解决方案。添加到项目的 build.gradle:

    android {
        sourceSets {
            androidTest {
                java.srcDirs = ['../<LIBRARY_MODULE_NAME>/src/androidTest/java', 'src/androidTest/java']
            }
        }
    ...
    }
    

    我确信有更好的解决方案,因为公共代码将在两个项目中编译。谁知道呢?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      • 2016-09-18
      相关资源
      最近更新 更多