默认的情况下,Android studio会帮助默认建立两个不同的测试 folder - 单元测试 (就是 java 的单元测试用例,独立于Android 不需要跑在 Android 设备上),另一个就是 Android 测试用例,主要是UI相关的,这类 case 必须要运行在 android 设备上。
正常情况下,默认建立的结构如下:
这样带来的问题就是,我们在编写测试用例的时候,很多时候不是独立,而是有关联的,是需要在两个测试用例中共享一些代码,比如说有个类叫做 TestUils.java,在两种测试用例中都需要用到。
实际上,单元测试和 UI 测试本身之间是独立,比如如何在 test 文件下的文件在 androidTest 下都是不可见的。
幸运的是,gradle 的灵活实际上还是可以做到这件事情的。
创建一个共享的测试文件夹
怎么做呢?首先是先在 app/src 下创建一个文件夹,这里就叫做testShared,现在的目录将变成下面的样子:
接下来在这个 folder 下新建一个类 TestUtils.java,这个就是我们想要共享的类:
然后核心的地方,是去修改 app/build.gradle 这个文件,按照下面的方式修改:
android.sourceSets {
test {
java.srcDirs += "$projectDir/src/testShared"
}
androidTest {
java.srcDirs += "$projectDir/src/testShared"
}
}
这样我们就告诉了测试用例在编译的时候同样编译 testShared这个folder,类似于追加一个其他目录下的文件来编译。
现在,重新做 gradle sync 后,你就应该可以在你的 UI 和 单元测试用例中调用这个共享的类了: