Android Studio单元测试入门
Android Studio单元测试入门
通常在开发Android app的时候经常会写一些小函数并验证它是否运行正确,通常做法我们是把这个函数放到某个界面(Activity上)执行一下,运行整个工程跑一下app,通过打log的方式来验证。不过,现在我们活用Android Studio自带的单元测试功能即可免除这种麻烦,直接写测试用例像Junit那样来验证你的小函数
内容提要
- 配置
- 编写Java测试用例
- 编写Android测试用例
- 其他测试基类
配置
在Android Studio中进行单元测试并不需要什么插件或者过多的配置,Android Studio本身就集成了测试环境,无论是单纯的java代码单元测试还是依赖Android SDK的Android代码单元测试,都能得心应手。
首先在你的gradle中加入Junit的依赖,注意这里的依赖方式是测试期间的依赖(testCompile):
dependencies {testCompile 'junit:junit:4.12'
}
再在项目的app/src下面和main文件夹同级的建立androidTest和test目录,并且分别在各自目录下建议java/com/xxx/xxx类似的和主工程一致的包名目录,建立好后,你的项目在Android Studio的Project中应该是这样的:
编写Java测试用例
如果所写的测试代码没有使用android sdk(android.***下的代码),那么可以在test目录下新建,本例中即为ExampleUnitTest,例子中测试了一个RxJava的Observable的发射后被消费的结果。
注意测试用例即一个public void的方法,并且加上@Test注解,这是Junit的标准用法
package com.jason.rxjavademo;
import org.junit.Test;
import rx.Observer;
import rx.subjects.PublishSubject;public class ExampleUnitTest {@Testpublic void testPublishSubject() {PublishSubject<String> stringPublishSubject = PublishSubject.create();stringPublishSubject.subscribe(new Observer<String>() {@Overridepublic void onCompleted() {System.out.println("Observable completed");}@Overridepublic void onError(Throwable e) {}@Overridepublic void onNext(String s) {System.out.println("Observer consumed " + s);}});stringPublishSubject.onNext("hello world");stringPublishSubject.onCompleted();}
}
这时候打开Android Studio左边的Structure的面板,可以看到测试用例方法testPublishSubject
右击并运行它,测试通过,返回了正确的值
注意本测试用例试用了System.out.println所以测试结果直接打印在了控制台上,如果把打印的地方换成Log.d()呢,你会发现报错:
这个实际是因为你在java的Unit test中引用了Android的代码,即android.util.log.Log。所以对于测试Android代码,需要在androidTest中
编写Android测试用例
Android测试用例我们可以
- 在androidTest下新建一个java类,并且继承自InstrumentationTestCase
- 编写一个public void的方法,但是必须要是方法名以test打头,比如testPublishSubject,并不需要@Test注解
public class TestSubject extends InstrumentationTestCase {private static final String LOG_TAG = "test";public void testPublishSubject() {PublishSubject<String> stringPublishSubject = PublishSubject.create();stringPublishSubject.subscribe(new Observer<String>() {@Overridepublic void onCompleted() {Log.d(LOG_TAG, "Observable completed");}@Overridepublic void onError(Throwable e) {}@Overridepublic void onNext(String s) {Log.d(LOG_TAG, "Observer consumed " + s);}});stringPublishSubject.onNext("hello world");stringPublishSubject.onCompleted();}
}
本例运行后,会在Android Monitor中以test这个LOGTAG打出和上一节一样的Log
Android Studio也提供了测试单个Activity或者多个Activities的测试用例方法基类,比如ActivityInstrumentationTestCase2,步骤为
- 在androidTest下新建一个java类,并且继承自ActivityInstrumentationTestCase2,传入需要测试的Activity的类到泛型
- 复写setUp方法,获得Context
- 编写一个public void的方法,但是必须要是方法名以test打头,比如testStart,并不需要@Test注解
public class TestActivity extends ActivityInstrumentationTestCase2<MainActivity> {private Context ctx;public TestActivity() {super(MainActivity.class);}@Overrideprotected void setUp() throws Exception {super.setUp();ctx = getActivity().getApplicationContext();}public void testStart() {Intent intent = new Intent(ctx, MainActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);ctx.startActivity(intent);}
}
运行这个测试用例,你会发现模拟器上单独启动了这个Activity
其他测试基类
除了InstrumentationTestCase和ActivityInstrumentationTestCase2外,android.test还提供了很多别的测试基类,比如
- ActivityUnitTestCase
- MockApplication
- ServiceTestCase
github site for this blog
https://github.com/soaringEveryday/BlogRoad/blob/master/Android%20Studio%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95%E5%85%A5%E9%97%A8.md
转载请注明
http://www.cnblogs.com/soaringEveryday/p/5461970.html
转载于:https://www.cnblogs.com/soaringEveryday/p/5461970.html
Android Studio单元测试入门相关推荐
- android studio单元测试插件,Android Studio单元测试插件下载
Android Studio单元测试插件是一款可以解决testcompile依赖问题的Android Studio插件,可以帮助用户们在Android Studio进行单元测试,有需要的朋友就来IT猫 ...
- 关于Android Studio单元测试中“Method d in android.util.Log not mocked.”问题的解决。
关于Android Studio单元测试中"Method d in android.util.Log not mocked."问题的解决. 点开链接 这就是解决方案.(这主要是由于 ...
- Android Studio 基础入门笔记
Android Studio 基础入门笔记 Android Studio 基础入门笔记 为什么选择使用 Android Studio 而不是EclipseADT 安卓配置JDK AS如何更新 常规的 ...
- Android Studio 使用入门及问题汇总
声明:转载自http://blog.csdn.net/wei_chong_chong/article/details/56280383 之前一直用eclipse+adt做Android开发.曾经尝试使 ...
- Android单元测试读写文件,Android Studio单元测试:读取数据(输入)文件
根据android-gradle-plugin版本: 1.版本1.5和更高版本: 只需把json文件到src / test / resources / test.json并引用它 classLoade ...
- Android Studio插件开发入门篇
转载自:http://blog.csdn.net/qq_27258799 https://blog.csdn.net/qq_27258799/article/details/78093734 前言 本 ...
- SuperMap iMobile+Android studio开发入门(二)——超图示例代码运行
背景:这里运行的是"产品入门"的"基于Android studio开发移动GIS程序"的"开发三维移动GIS程序",本篇对超图帮助文档进行了 ...
- SuperMap iMobile+Android studio开发入门(一)——环境配置
背景:开发管线的安卓app,功能初步定为三维显示,属性查询和属性修改. (本文属于小白记录贴,会尽量详细,可供有同样需求的人参考,有问题欢迎留言交流.) 使用软件: SuperMap iMobile ...
- android studio 学习入门篇
开发第一应用 可以开发属于自己的应用,是否有点小激动?好吧!让我们开始,首先点击Start a new Android Studio Project创建工程: 接下来需要输入应用名称(第一个字母要大写 ...
- Android Studio开发入门-引用jar及so文件
最近初学安卓开发,因为以前从未用过JAVA,连基本的语法都要从头开始,所以不太顺利.在尝试使用百度语音识别引擎时遇到了如何引用jar及so文件的问题.在GOOGLE加多次尝试之后,找到了一个比较简单的 ...
最新文章
- java分享第五天(数组)
- Android之ADB常用命令
- python计算程序运行时间
- 201521123050 《Java程序设计》第13周学习总结
- java api教程_Java api 入门教程 之 JAVA的文件操作
- LINUX修改path环境变量
- 3.22全局参数的保存_补作业来啦~~
- Android恶意样本分析——frida破解三层锁机样本
- 软件测试需要学什么?全网最全软件测试必备7大技能详解,摇身一变资深测试
- Medical robotics-Regulatory, ethical, and legal considerations for increasing levels of autonomy
- 新南威尔士大学计算机博士申请,2020年新南威尔士大学博士申请时间
- android3d画廊自动切换,Android实例(一)—— 3D画廊
- Portapack应用开发教程(十五) APRS接收
- mysql中联合索引abc 使用bac_mysql 联合索引
- pl/sql中创建存储过程并执行
- vite+element-plus项目基础搭建
- [附源码]java毕业设计超市订单管理系统
- 原创深度精华好文,网络是如何工作的?建议静下心好好看,收获会颇丰!
- 【零基础Eviews实例】00了解多元线性回归模型常见检验
- Linux系统安装hadoop教程
热门文章
- L3_08——图中所有边都是相等的常数
- 羞,Spring Bean 初始化/销毁竟然有这么多姿势
- Apache Commons Lang3 常用工具类库
- Java 设计模式 之 模板方法模式(Template Method)
- Spring Boot 2.x 切换 Servlet 嵌入式容器 Tomcat、Jetty、Undertow
- 基于计算机 中学数学教学,计算机辅助中学数学教学的研究
- 回归分析beta值的标准_多因子建模:回归法和打分法
- 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_11-MongoDb入门-安装Mongodb数据库...
- 跨域请求解决方法(JSONP, CORS)
- Oracle实例解析:编码与字符集