Android 测试代码编写小技巧 - UI 和 单元测试间共享代码

默认的情况下,Android studio会帮助默认建立两个不同的测试 folder - 单元测试 (就是 java 的单元测试用例,独立于Android 不需要跑在 Android 设备上),另一个就是 Android 测试用例,主要是UI相关的,这类 case 必须要运行在 android 设备上。

正常情况下,默认建立的结构如下:

Android 测试代码编写小技巧 - UI 和 单元测试间共享代码_第1张图片
1.png

这样带来的问题就是,我们在编写测试用例的时候,很多时候不是独立,而是有关联的,是需要在两个测试用例中共享一些代码,比如说有个类叫做 TestUils.java,在两种测试用例中都需要用到。

实际上,单元测试和 UI 测试本身之间是独立,比如如何在 test 文件下的文件在 androidTest 下都是不可见的。

幸运的是,gradle 的灵活实际上还是可以做到这件事情的。

创建一个共享的测试文件夹

怎么做呢?首先是先在 app/src 下创建一个文件夹,这里就叫做testShared,现在的目录将变成下面的样子:

Android 测试代码编写小技巧 - UI 和 单元测试间共享代码_第2张图片
2.png

接下来在这个 folder 下新建一个类 TestUtils.java,这个就是我们想要共享的类:

Android 测试代码编写小技巧 - UI 和 单元测试间共享代码_第3张图片
3.png

然后核心的地方,是去修改 app/build.gradle 这个文件,按照下面的方式修改:

android.sourceSets {  
    test {
        java.srcDirs += "$projectDir/src/testShared"
    }

    androidTest {
        java.srcDirs += "$projectDir/src/testShared"
    }
}

这样我们就告诉了测试用例在编译的时候同样编译 testShared这个folder,类似于追加一个其他目录下的文件来编译。

现在,重新做 gradle sync 后,你就应该可以在你的 UI 和 单元测试用例中调用这个共享的类了:


Android 测试代码编写小技巧 - UI 和 单元测试间共享代码_第4张图片
4.png

你可能感兴趣的:(Android 测试代码编写小技巧 - UI 和 单元测试间共享代码)