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

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

1.png

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

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

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

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

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

2.png

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

3.png

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

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

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

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


4.png

更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. 基于 android 数据备份恢复的一种实现
  4. Android第十八课 VS源码文件导入Android工程 中文乱码
  5. android资料共享
  6. android drawable-hdpi xhdpi xxhdpi xxxhdpi 的理解
  7. Android中的各种XML
  8. Android(安卓)应用程序快速启动的秘诀
  9. 瘸腿蛤蟆笔记cocos2d-x-3.2移植到到android步骤及问题定位

随机推荐

  1. exit(0)在c语言中是什么意思
  2. const用法是什么?
  3. C语言中输出字符串用什么符号
  4. c语言输入五个数如何求平均值?
  5. c语言根号函数是什么
  6. c语言大于等于怎么打?
  7. c程序中宏展开是在什么时候进行的?
  8. 用C语言指针如何求最大值最小值
  9. c++定义数组的方法
  10. c语言中%是什么意思