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

San*_*ado 9 testing android gradle android-testing android-studio

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

San*_*ado 11

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

我提出的解决方案是利用源集来定义公共代码.首先,我将共享的测试代码放入src/sharedTest/java1中.

android {  
  sourceSets {
    String sharedTestDir = 'src/sharedTest/java'
    test {
      java.srcDir sharedTestDir
    }
    androidTest {
      java.srcDir sharedTestDir
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

它正在做的是将我的共享代码目录添加到test和androidTest源集.现在,除了默认的Java源代码之外,它们还将包含共享代码.

  • 看来这对 Android Studio Chipmunk 不再适用了。 (8认同)

Sea*_*ici 6

从 Android Studio Chipmunk 开始,通过公共文件夹和源集共享代码不再有效。但是,还有另一种方法可以使其发挥作用:

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

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

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