在 Android Studio 中的 Android 仪器测试和单元测试之间共享代码

Sharing code between Android Instrumentation Tests and Unit Tests in Android Studio

可以在 Android Studio 中的这两种测试模式之间共享代码吗? 我有一组 Mock Utils class,我需要在两种测试模式下访问它们。

感谢 Dan Lew (http://blog.danlew.net/2015/11/02/sharing-code-between-unit-tests-and-instrumentation-tests-on-android/) 的博客 post,我终于找到了解决方案(解决方法)。

The solution I've come up with is to leverage source sets to define common code. First, I put my shared test code into src/sharedTest/java1 .

android {  
  sourceSets {
    String sharedTestDir = 'src/sharedTest/java'
    test {
      java.srcDir sharedTestDir
    }
    androidTest {
      java.srcDir sharedTestDir
    }
  }
}

What it's doing above is adding my shared code directory to both the test and androidTest source sets. Now, in addition to their default Java sources, they'll also include the shared code.

对于多模块项目

sourceSets {
        test.java.srcDirs += ["${project(':module-name').projectDir}/src/sharedTest/java",
                              "src/test/java"]
    }

已接受的答案似乎不再适用于 Android Studio Chipmunk...

这是一个(不理想的)解决方法:

android {  
  sourceSets.main.java.srcDir += "$projectDir/src/testShared/java"
}

从 Android Studio chipmunk 开始,通过公共文件夹和 sourceSets 共享代码不再有效。但是,还有另一种方法可以让它工作:

基本上,创建一个 android 库 (sharedTestCode),通过 testImplementation 和 androidTestImplementation 在您的应用中依赖它。在 sharedTestCode build.gradle 文件中,取决于应用程序。您现在应该能够创建共享测试数据并在两种类型的测试中引用它们。

这是一个使用此设置的示例项目:

https://drive.google.com/file/d/1I2CZhTxHGRgCN9UCEjIuWUfFnGxTF_Cv/view?usp=sharing