Android使用JUnit进行单元测试

前言:为什么要进行单元测试?单元测试能快速是开发者,找到代码中的问题所在,因为是单元测试,所以代码只执行响应的测试单元,执行快解决问题的效率高,同时提高代码的质量。
Android中的单元测试可简单分为两步:
1.Manifast中注册:要注册三个部分。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xhm.testandroid"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<!-- 单元测试的权限 -->
<uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />
<!-- 单元测试的工具基类,测试类需要,其中的name和targetPackage是必须的,其他标签可选。targetPackage名要和package名相同,否者会报异常 -->
<instrumentation
android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.xhm.testandroid" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" > <!-- 单元测试的工具包 -->
<uses-library android:name="android.test.runner" /> <activity
android:name="com.xhm.testandroid.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
2.测试工具类编写:
package com.xhm.testandroid; import android.test.ActivityInstrumentationTestCase2; /**
* 测试工具类编写 其中的MainActivity为要测试的类。
* 当选择Run As---->Android JUnit Test时,就是自动寻找这个类,
* 并一次调用测试方法,然后弹出JUnit界面
* @author Administrator
*
*/
public class BaseTest extends ActivityInstrumentationTestCase2<MainActivity> {
// 这个构造方法适用于SDK版本低的。super中参数1:被测试类的包名;super中参数2:被测试类的名字
public BaseTest() {
super("com.xhm.testandroid", MainActivity.class);
} // 这个构造方法适用于SDK版本高的。
public BaseTest(Class<MainActivity> activityClass) {
super(activityClass);
} // 测试方法随意取名,但必须为public,测试的时候建立的方法都会调用
public void testNull() {
// 获得MainActivity,这样就能调用其中的方法了
getActivity();
} public void testTest() {
assertEquals("Helloworld!", getActivity().testjia(1, 3).getText());
} }
3.程序测试截图:
测试程序截图:

测试结果截图:

其中的
表示测试成功,即返回的结果和预想的一致。
其中的
表示测试失败,即返回的结果和预想的不同。
4.注意:
1)也许有人会问为什么运行测试的时候会自动去执行BaseTest这个方法,首先是因为他继承了ActivityInstrumentationTestCase2这个类,而在注册instrumentation时就是关键,你可以将Instrumentation理解为一种没有图形界面的,具有启动能力的,用于监控其他类(用Target Package声明)的工具类。
2)在注册targetPackage时,一定要和项目的package一致,否则会出现问题,然后将测试类建立在targetPackage所指向的包路径下。
3)在写测试工具类的时候,写了两个构造方法,因为发现在android低版本的SDK中,只有一个参数的构造方法不会调用,所以写了两个。
5.常用方法:
AndroidTestCase.getContext()://此函数的功能为得到Android系统的上下文对象,通过它可以取得contentResolver等对象。
ActivityInstrumentationTestCase.getActivity()//此函数的功能为得到被测Activity对象
assertTrue(String message,boolean condition)//声明状态是True
assertFalse(String message,boolean condition)//声明状态是False
assertEquals(String message,T expected,T expected)//声明两个对象相等
assertNotNull(String message,Object object)//声明对象不为空
assertNull(String message,Object object)//声明对象为空
fall(String message)//测试失败并附带一条消息
所有的方法位于:junit.framework.Assert中,地址http://developer.android.com/reference/junit/framework/Assert.html。
Android使用JUnit进行单元测试的更多相关文章
- Android之如何使用JUnit进行单元测试
转的:http://www.blogjava.net/qileilove/archive/2014/05/19/413824.html Android中如何使用JUnit进行单元测试 在我们日常开发a ...
- Android中如何使用JUnit进行单元测试 eclipse
Android中如何使用JUnit进行单元测试 在我们日常开发android app的时候,需要不断地进行测试,所以使用JUnit测试框架显得格外重要,学会JUnit可以加快应用的开发周期. Andr ...
- Android搭建junit测环境
在AndroidManifest.xml文件中增加两个东西,分别是: 1.uses-library ,位于application里面. 2.instrumentation,与application同级 ...
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...
- Android(java)学习笔记165:Android的Junit调试
编写android应用的时候,往往我们需要编写一些业务逻辑实现类,但是我们可能不能明确这个业务逻辑是否可以成功实现,特别是逻辑代码体十分巨大的时候,我们不可能一行一行检查自己的代码,为了解决这样的问题 ...
- 在Android Studio中进行单元测试和UI测试
本篇教程翻译自Google I/O 2015中关于测试的codelab,掌握科学上网的同学请点击这里阅读:Unit and UI Testing in Android Studio.能力有限,如有翻译 ...
- Android(java)学习笔记108:Android的Junit调试
1. Android的Junit调试: 编写android应用的时候,往往我们需要编写一些业务逻辑实现类,但是我们可能不能明确这个业务逻辑是否可以成功实现,特别是逻辑代码体十分巨大的时候,我们不可能一 ...
- [Android]Android MVP&依赖注入&单元测试
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5422443.html Android MVP&依赖注入 ...
- java如何使用JUnit进行单元测试
注:所有内容都是在eclipse上实现,关于eclipse的安装和jdk的安装配置,请看:http://www.cnblogs.com/fench/p/5914827.html 单元测试是什么? 百度 ...
随机推荐
- JAVA常见算法题(七)
package com.xiaowu.demo; /** * 输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. * * @author WQ * */ public class De ...
- 使用Python3解压gz、tar、tgz、zip、rar五种格式的压缩文件例子
使用Python3解压如下五种压缩文件:gz.tar.tgz.zip.rar 简介 gz: 即gzip,通常只能压缩一个文件.与tar结合起来就可以实现先打包,再压缩. tar: linux系统下的打 ...
- Webpack打包工具学习使用
Webpack 是当下最热门的前端资源模块化管理和打包工具.它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源.还可以将按需加载的模块进行代码分隔,等到实际需要的时候再异步加载.通过 ...
- oracle数据库中函数和存储过程中的区别
一.函数必须有返回值,过程没有返回值: 二.函数可以单独执行,过程必须通过execute执行: 三.函数可以嵌入SQL中执行,过程不能. 可以将比较复杂的查询写成函数,然后在过程中调用.
- EF使用延迟加载的本质原因
EF(Entity Framework)是微软的一个ORM框架 使用过EF的同学都知道它有一个延迟加载的功能 那么这个延迟加载的功能到底是什么? 为什么需要延迟加载? 使用延迟加载的优点和缺点又各是什 ...
- 利用excel去除txt文本中重复项
2017-04-10 1.要去重的文件,点击右键,选择程序. 2.选择excel表格或者wps表格. 3.excel表格去重:选中单元格——数据——筛选——高级筛选——选择不重复记录——确定 wps表 ...
- php权威编程有趣部分
1.isset empty如果遇到null,isset判断为false;empty 判断为trueisset(var1, var2,...) 可以判断多个变量 2.unsetunset可以取消之前定义 ...
- VB断点调试
最近都在敲机房收费系统,这个系统是我们第一次自己在没有源代码的情况下进行的系统. 写程序的时候逻辑非常重要,可是我们还要清楚非常多时候你以为的并非你以为的! 就像在敲机房的时候,我们明明理清了逻辑.并 ...
- vue-router 嵌套路由
const router = new VueRouter({ routes: [ { path: '/user/:id', component: User, children: [ { // 当 /u ...
- 关于解决 http 状态码200,php 文件有输出,但是不显示模板文件的问题
一 问题 给公司搭建一个在线测试站点之后,在浏览器地址栏输入 "http://xxx.xxx.xxx/index.php",页面什么都没显示.调出浏览器的开发者工具查看,http ...