假如你有一款安卓应用,其包含一系列测试类,其中一部分是 unit 测试(位于 src/test),其余为 instrument 测试(位于 src/androidTest)。

那么问题来了:你有一些想在所有测试之间共享的实用程序代码,但是 src/test 无法使用来自 src/androidTest 的代码,反之亦然。虽然 也可以 把代码放入 src/main 中,但还是想尽量避免移动测试代码。那么,到底怎样在测试之间共享代码呢?

我想到的解决办法就是,利用源集 (source sets) 定义公共代码。首先,将共享测试代码放入 src/sharedTest/java1 中,然后往 build.gradle 中添加如下代码:

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

以上代码会将共享代码目录 添加testandroidTest 源集(source sets)中。现在,这些源集中不仅包括默认的 Java 源码,还包括共享代码。

哈哈!现在 testandroidTest 就可以共享实用程序代码了。

OneAPM Mobile Insight 以真实用户体验为度量标准进行 Crash 分析,监控网络请求及网络错误,提升用户留存。访问 OneAPM 官方网站感受更多应用性能优化体验,想阅读更多技术文章,请访问 OneAPM 官方技术博客

原文地址:http://blog.danlew.net/2015/11/02/sharing-code-between-unit-tests-and-instrumentation-tests-on-android/

本文转自 OneAPM 官方博客