现在写程序写着写着对自己写的程序就没有信心了,代码量的上升,逻辑越来越复杂,非常需要单元测试(Unit Test)。现在感觉没有单元测试和版本控制,一个项目很容易崩溃。对程序的一点修改很可能会影响整个项目的实现。之前单元测试只是用过JUnit 。现在让我们来看下Android 中的单元测试是如何实现的。

当然最佳指导是Android的官方网站,http://developer.android.com,点击搜索 unit test,就到了测试的主页http://developer.android.com/guide/topics/testing/index.html。这里写的一系列的单元测试充其量就是对上面的翻译和实践。

主要会涉及下面的四个方面:

1.普通Java类中的Function测试

2.Android Activity 测试(涉及到控件,和Activity生命周期)

3.Android Content Provider 测试

4.Android Service 测试


1.普通Java类中的Function测试(实战)

先新建一个普通的Android 项目(HelloAndroid),里面多一个自定义的类(MyClass),类里有一个实现加法的方法sum(int a,int b),我们就来测试下这个加法能不能正常工作。

Android 中的单元测试 (普通Java类中的Function测试篇)_第1张图片

建好的项目结构是这样的:

Android 中的单元测试 (普通Java类中的Function测试篇)_第2张图片

MyClass.java 的内容非常简单,如下面的代码所示:

package com.waitingfy.android;public class MyClass {   public int  sum(int a,int b) {return a + b;   }}

谁都知道这个方法不会有错,但是我们这里的目的是为了知道如何使用单元测试,所以都先不要对这个类太深究了,还是要对它进行测试。

接下来是建立一个Android Test的项目

Android 中的单元测试 (普通Java类中的Function测试篇)_第3张图片

输入好名称后的下一步,就是要选择我们要测试的目标项目,这里我们当然选择HelloAndroid

Android 中的单元测试 (普通Java类中的Function测试篇)_第4张图片

建立完后的项目结构:

Android 中的单元测试 (普通Java类中的Function测试篇)_第5张图片

我们注意到自动生成的包名称为com.waitingfy.android.test,就是比我们测试目标多了个test,当然你也可以打开AndroidMainfest.xml查看,里面有targetPackage。

好了,开始写我们的测试类,记得这个类要继承TestCase,后面我们还会讲到AndroidTestCase,和ServiceTestCase。

src/com.waitingfy.android.test/TestMyClass.java,我一般用这样的命名,比较容易看出具体那个类出错了。

package com.waitingfy.android.test;import com.waitingfy.android.MyClass;import junit.framework.Assert;import junit.framework.TestCase;//非常关键的一点是继承了TestCasepublic class TestMyClass extends TestCase {MyClass myClass;    /*     * 测试类启动调用的方法,一般在这里初始化一些测试的条件,初始化类等。     * */@Overrideprotected void setUp() throws Exception {super.setUp();myClass = new MyClass();}        //我们写的测试方法public void testSum() {Assert.assertEquals("2", myClass.sum(1, 1));}    /*     * 测试类结束调用的方法,一般在这里释放资源等。     * */@Overrideprotected void tearDown() throws Exception {super.tearDown();}}

写好后就可以运行这个测试项目了,运行方法:

Android 中的单元测试 (普通Java类中的Function测试篇)_第6张图片

运行后,要稍微等几秒钟时间,Eclipse 会尝试编译两个项目HelloAndroid和HelloAndroidTest到手机或模拟器手机中,如果你进行任何修改,运行Android Junit Test,它还是会重新编译两个项目的。因为HelloAndroidTest是没有放到手机桌面上的,所以看不到,在管理应用程序当中还是可以看到的。

Android 中的单元测试 (普通Java类中的Function测试篇)_第7张图片

发现结果我们的testSum没有通过,=。=,查看了失败的记录,发现我们估计的值错了,应该是int 的2 ,把TestMyClass.java中的

Assert.assertEquals("2", myClass.sum(1, 1));
修改为:

Assert.assertEquals(2, myClass.sum(1, 1));
,就成功了,界面是绿色的。

Android 中的单元测试 (普通Java类中的Function测试篇)_第8张图片

好了先到这里。:)

原文地址:http://www.waitingfy.com/?p=72

附上这个单元测试的例子下载HelloAndroid

更多相关文章

  1. 初入Android单元测试 - JUnit
  2. Android 常用图片框架对比
  3. Android超炫图片浏览器代码
  4. Android 入坑 - 创建项目
  5. weexpack 创建项目, 打包Android 和 ios
  6. 转载--Android 开发 调用图库选择图片实现和参数详解
  7. Android 单元测试和 UI 测试初步实践
  8. Android应用无线测试要点
  9. 直接拿来用!最火的40个Android开源项目

随机推荐

  1. Google Map Android v2开发: 安装运行Goo
  2. 关于 android 加载 res 图片 out of memo
  3. 【视频】 安卓渗透课程收集整理
  4. Gradle 构建 android 应用常见问题解决指
  5. Intent机制详解
  6. 快速上手Android数据库操作
  7. Android应用程序绑定服务(bindService)的过
  8. ASM (Android Screen Monitor) Android真
  9. Android(安卓)Studio使用webservice远程
  10. Android 音频框架概述(一)之 AudioTrack