简单谈谈简单谈谈android studio 的单元测试的单元测试
面对android studio Run 一次项目要等好几分钟的痛点,不得不研究一下android studio 的单元测试。
其实我的目的很简单,在不对视图进行操作的前提下,测试一些activity 的生命周期,或网络拉取数据的一些处理,比如解析
json 数据啊,做网络请求啊等等,也就是对 Model层的测试。这些不需要操作视图,但在没有单元测试环境下,比如我们网
络请求一些数据,Log 打印看看是否请求成功,却又要 利用模拟器或真机Run 一次项目,花费好几分钟,这是不能容忍的。
于是乎,强大的 android studio 也考虑到了这一点,给我们提供的简单的单元测试类。
让我们来简单的了解学习一下吧。
首先先来了解一下一些名称,方便下面介绍和使用:
在java中咱们有用过 JUnit 的 单元测试 ,那android 也是基于 java 语言编写的,所以也有个 JUnit的单元测试。在做 android
的单元测试需要导入依赖:
androidTestCompile 'junit:junit:4.12'
testCompile 'junit:junit:4.12'
其中, test目录为在本机执行单元测试代码的目录, androidTest为在Android设备上执行单元测试代码的目录。如下图:
Android 自带的 junit单元测试的一些测试类(androidTest测试 需要运行在模拟机或真机上)
1、、InstrumentationTestCase框架:框架:
Instrumentation和Activity有点类似,只不过Activity是需要一个界面的,而Instrumentation并不是这样的,我们可以将它理解
为一种没有图形界面的,具有启动能力的,用于监控其他类(用Target Package声明)的工具类。
举个例子,利用InstrumentationTestCase 启动一个activity:
在androidTest下新建一个java类,并且继承自InstrumentationTestCase编写一个public void的方法,但是必须要是方法名以
test打头,比如testPublishSubject,并不需要@Test注解
public class TestSubject extends InstrumentationTestCase {
private static final String LOG_TAG = "test";
public void testPublishSubject() {
launchActivity("demo.zts.com.demo",SecondActivity.class,null);
}
}
2、ApplicationTestCase——测试整个应用程序的类。它允许你注入一个模拟的Context到应用程序中,在应用程序启动之前
初始化测试参数,并在应用程序结束之后销毁之前检查应用程序。
使用Context,你可以浏览资源,文件,数据库等等。基类是AndroidTestCase,一般常见的是它的子类,和特定组件关联。