Android连接测试通用代码移到库模块

Android连接测试通用代码移到库模块,android,gradle,android-gradle-plugin,Android,Gradle,Android Gradle Plugin,我有两个项目模块:A、B和库模块。两个项目都使用一个库。我在这两个项目中也有一些连接测试(UI自动机)。这些测试都有公共的实用程序代码,我想把它们转移到库中。我怎么做 我试过的。第一种方式: 将公共代码复制到库项目到src/androidTest/java/xxx 文件夹 添加到库build.gradle UI自动机依赖项下 androidTestCompile 将以下内容添加到project build.gradle: 这会导致项目中出现构建问题,因为据我所知,在构建调试配置期间未使用src

我有两个项目模块:A、B和库模块。两个项目都使用一个库。我在这两个项目中也有一些连接测试(UI自动机)。这些测试都有公共的实用程序代码,我想把它们转移到库中。我怎么做

我试过的。第一种方式:

  • 将公共代码复制到库项目到src/androidTest/java/xxx 文件夹
  • 添加到库build.gradle UI自动机依赖项下 androidTestCompile
  • 将以下内容添加到project build.gradle:

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

    第二种方式:

  • 前两个步骤是相同的

  • 添加到library build.gradle


  • 添加到project build.gradle

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

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

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

    android {
        sourceSets {
            androidTest {
                java.srcDirs = ['../<LIBRARY_MODULE_NAME>/src/androidTest/java', 'src/androidTest/java']
            }
        }
    ...
    }
    
    android{
    源集{
    雄激素试验{
    java.srcDirs=['..//src/androidTest/java','src/androidTest/java']
    }
    }
    ...
    }
    

    我相信有更好的解决方案,因为这两个项目都会编译通用代码。谁知道呢?我确实找到了解决办法。添加到项目的build.gradle:

    android {
        sourceSets {
            androidTest {
                java.srcDirs = ['../<LIBRARY_MODULE_NAME>/src/androidTest/java', 'src/androidTest/java']
            }
        }
    ...
    }
    
    android{
    源集{
    雄激素试验{
    java.srcDirs=['..//src/androidTest/java','src/androidTest/java']
    }
    }
    ...
    }
    
    我相信有更好的解决方案,因为这两个项目都会编译通用代码。谁知道呢

    dependencies {
    ...
    androidTestCompile project(path: ':library', configuration: "connectedTestArtifact")
    ...
    }
    
    android {
        sourceSets {
            androidTest {
                java.srcDirs = ['../<LIBRARY_MODULE_NAME>/src/androidTest/java', 'src/androidTest/java']
            }
        }
    ...
    }