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 (一)的更多相关文章

  1. Android:单元测试Junit的配置

    在实际开发中,开发android软件的过程需要不断地进行测试.而使用Junit测试框架,侧是正规Android开发的必用技术,在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性.... ...

  2. Android 单元测试Junit

  3. 阿里知识储备之二——junit学习以及android单元测试

    一,junit框架 http://blog.csdn.net/afeilxc/article/details/6218908 详细见这篇博客 juit目前已经可以和maven项目进行集成和测试,而且貌 ...

  4. Android随笔之——Android单元测试

    在实际开发中,开发android软件的过程需要不断地进行测试.所以掌握Android的单元测试是极其重要的.您应该把单元测试作为Android应用开发周期的一部分,精心编写的测试可以在开发早起帮你发现 ...

  5. Android单元测试实践

    为什么要写单元测试 首先要介绍为什么蘑菇街支付金融这边会采用单元测试的实践.说起来比较巧,刚开始的时候,只是我一个人会写单元测试.后来老板们知道了,觉得这是件 很有价值的事情,于是就叫我负责我们组的单 ...

  6. Android单元测试

    安卓单元测试总结文章,目测主要会cover以下的主题: 什么是单元测试 为什么要做单元测试 JUnit Mockito Robolectric Dagger2 一个具体的app例子实践 神秘的bonu ...

  7. 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

    1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...

  8. Android(java)学习笔记165:Android的Junit调试

    编写android应用的时候,往往我们需要编写一些业务逻辑实现类,但是我们可能不能明确这个业务逻辑是否可以成功实现,特别是逻辑代码体十分巨大的时候,我们不可能一行一行检查自己的代码,为了解决这样的问题 ...

  9. Android单元测试: 首先,从是什么开始

    Android单元测试: 首先,从是什么开始 http://chriszou.com/2016/04/13/android-unit-testing-start-from-what.html 这是一系 ...

随机推荐

  1. netback于kthread遇到cpu affinity问题

    最近的升级netback, 在测试过程中,查找vm全双工压力,rx的pps波动很厉害,见rx kthread尽管cpu affinity它是0-7 (dom0 8vcpu), 但往往,她去了物理破坏c ...

  2. C++虚函数表分析

    在<<反C++>>文中提到的 VC6.0 上的编译器支持一个d1reportAllClassLayout的开关, 能够输出全部对象的内存布局信息, 我自己经常使用vs2005来 ...

  3. dirname

    dirname 命令来删除文件路径中最后一个/以及一些背后.当文件通常能够得到一个文件夹. 实例: dean@dean-Latitude-3330:~$ dirname /usr/bin/ /usr ...

  4. Linux内核分析(二)----内核模块简介|简单内核模块实现

    原文:Linux内核分析(二)----内核模块简介|简单内核模块实现 Linux内核分析(二) 昨天我们开始了内核的分析,网上有很多人是用用源码直接分析,这样造成的问题是,大家觉得很枯燥很难理解,从某 ...

  5. j2se--Socket沟通

    第一次接触Socket课程设计大二,我在做一个图书馆管理系统.源代码是从互联网上下载,代码天天磨,隐约中记得有Socket这么一个单词. 第二次是去年代表学校參加"河北省电子信息职业技能大赛 ...

  6. or1200乘法除法指令解释

    以下摘录<步骤吓得核心--软-core处理器的室内设计与分析>一本书 OR1200中乘法除法类指令共同拥有9条,表8.3给出了全部的乘法除法类指令的作用及说明. 说明:表8.3是ORBIS ...

  7. EL表达式语言

    EL (Expression Language) 目的:为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法. ...

  8. 采用xshell链路本地虚拟机Linux

    昨天想安装在自己的机器看Linux.而使用xshell通路.但是这花了很长的时间,于xshell结束所有的提示"Could not connect to '192.168.54.100' ( ...

  9. freemarker定义自己的标记(三)-nested说明

    freemarker定义自己的标记 1.nested指令 是可选的,能够在<#macro>和</#macro>之间使用在不论什么位置和随意次数 2.演示样例说明 <#ma ...

  10. find your present (2) 2095

    Problem Description In the new year party, everybody will get a "special present".Now it's ...