Android单元测试Junit (一)
1、在eclips中建立一个Android工程,具体信息如下:

2、配置单元测试环境,打开AndroidManifest.xml,具体代码如下所示:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.milan.junit"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.milan.junit.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>
<!--使用单元测试库-->
<uses-library android:name="android.test.runner"/>
</application>
<!-- 声明Android框架和目标测试包-->
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.milan.junit" />
</manifest>
说明:
1、<uses-library android:name="android.test.runner"/> 这句,放在application内部。
2、android:targetPackage 这个属性,一般为应用程序的包名,必须和xml中manifest节点的package同名。
3、创建一个包com.milan.service,这个包下面再创建一个类 Person,用于测试的时候调用。
package com.milan.service;
public class Person {
public int getAge(String age){
return new Integer(age);
}
}
4、在com.milan.junit包下面,建一个PersonTest类,代码如下:
package com.milan.junit;
import com.milan.service.Person;
import android.test.AndroidTestCase;
public class PersonTest extends AndroidTestCase {
///用例1,传入非数字
public void test01(){
Person person = new Person();
person.getAge("milan");
}
//用例2,传入数字
public void test02(){
Person person = new Person();
person.getAge("1");
}
}
5、选中PersonTest.java,右键选择Run As 选择Android Junit Test 运行单元测试,如图:

从上图可以看到,test01的测试结果为失败。失败原因为:java.lang.NumberFormatException: Invalid int: "milan",
test02的测试结果为通过。
如果没有Junit运行结果,可以在eclips的Window菜单下,选择Show View--Other--Java--Junit 中打开。
6、运行单个测试用例
eclips的Window菜单下,选择Show View--Other--General--Outline打开大纲视图,右键测试用例,即可运行单个测试用例。如图:

同理,如果需要执行整个项目的测试用例,可选中整个项目,用Android Junit Test运行即可。
7、断言
当我们获得程序的运行结果,我们希望Junit能够自动判断 将实际结果和期望结果是否一致。这个时候我们就可以用到Junit自带的断言。
修改PersonTest类,为以下代码:
package com.milan.junit;
import com.milan.service.Person;
import android.test.AndroidTestCase;
public class PersonTest extends AndroidTestCase {
///用例1,传入非数字
public void test01(){
Person person = new Person();
int i= person.getAge("milan");
assertEquals(1, i);
}
//用例2,传入数字,断言有message
public void test02(){
Person person = new Person();
int i= person.getAge("1");
assertEquals("传入数字",2,i);
}
//用例2,传入数字,断言无message
public void test03(){
Person person = new Person();
int i= person.getAge("1");
assertEquals(1,i);
}
}
然后运行结果为:

如果传入了message,一旦用例不通过,会在右边的错误详细里,列出message。
8、其他断言
JUnit提供丰富的断言,来满足我们不同的比对需求。按住Ctrl键,点击代码中的assertEquals,可以看到Assert类里面多支持的断言函数的参数类型:

大家有空可以多试试。这里就不一一讲解了。
其他信息
如出现Test run failed:Unable to find instrumentation target package错误
是因为 android:targetPackage="com.milan.junit" 必须和
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.milan.junit"
package相同的包名
Android单元测试Junit (一)的更多相关文章
- Android:单元测试Junit的配置
在实际开发中,开发android软件的过程需要不断地进行测试.而使用Junit测试框架,侧是正规Android开发的必用技术,在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性.... ...
- Android 单元测试Junit
- 阿里知识储备之二——junit学习以及android单元测试
一,junit框架 http://blog.csdn.net/afeilxc/article/details/6218908 详细见这篇博客 juit目前已经可以和maven项目进行集成和测试,而且貌 ...
- Android随笔之——Android单元测试
在实际开发中,开发android软件的过程需要不断地进行测试.所以掌握Android的单元测试是极其重要的.您应该把单元测试作为Android应用开发周期的一部分,精心编写的测试可以在开发早起帮你发现 ...
- Android单元测试实践
为什么要写单元测试 首先要介绍为什么蘑菇街支付金融这边会采用单元测试的实践.说起来比较巧,刚开始的时候,只是我一个人会写单元测试.后来老板们知道了,觉得这是件 很有价值的事情,于是就叫我负责我们组的单 ...
- Android单元测试
安卓单元测试总结文章,目测主要会cover以下的主题: 什么是单元测试 为什么要做单元测试 JUnit Mockito Robolectric Dagger2 一个具体的app例子实践 神秘的bonu ...
- 无废话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单元测试: 首先,从是什么开始
Android单元测试: 首先,从是什么开始 http://chriszou.com/2016/04/13/android-unit-testing-start-from-what.html 这是一系 ...
随机推荐
- 设计模式 Template Method模式 显示程序猿的一天
转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/26276093 不断设计模式~ Template Method模式 老套路,看高清 ...
- Redis集群方案及实现
在作出Redis群集解决方案,他跑了小半个.行表现得非常稳定在几乎相同的经历与大家分享,我写在前面的文章数据在线服务的一些探索经验,能够做为背景阅读 应用 我们的Redis集群主要承担了下面服务:1. ...
- SQL Server 2005------函数
原文:SQL Server 2005------函数 SQL Server 2005支持用户自定义函数和内置系统函数,根据返回值类型又分为标量函数和表值函数. 1.标量函数标量函数:返回单个数据值,返 ...
- linux安装QQ
下载链接:WineQQ2013SP6-20140102-Longene 下面步骤一定要依照顺序来,我用的系统是 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ ...
- LeetCode 48 Anagrams
Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be ...
- Android四种Activity的加载模式(转)
建议首先阅读下面两篇文章,这样才可以更好的理解Activity的加载模式: Android的进程,线程模型: http://www.cnblogs.com/ghj1976/archive/2011/0 ...
- Maven: NoClassDefFoundError: org/codehaus/plexus/classworlds/launcher/Launcher
为了和团队开发环境保持一致,须要 在Ubuntu上安装maven2.2.1,引文我之前已经用apt-get命令安装了3.3的maven.在运行maven命令时报错: Maven: NoClassDef ...
- 关于JavaScript中的事件代理
今天面试某家公司Web前端开发岗位,前面的问题回答的都还算凑活,并且又问了一下昨天面试时做的一道数组去重问题的解题思路(关于数组去重问题,可以观赏我前几天写的:http://www.cnblogs.c ...
- 网络资源(7) - JAX-WS视频
2014_08_25 http://v.youku.com/v_show/id_XNjMzNDcyMTk2.html 基于JAX-WS编程模型的WebService 1. @WebService注释类 ...
- JavaScript编写了一个计时器
初学JavaScript,用JavaScript编写了一个计时器. 设计思想: 1.借助于Date()对象,来不断获取时间点: 2.然后用两次时间点的毫秒数相减,算出时间差: 3.累加时间差,这样就能 ...