Android 中的单元测试例子 (普通Java类中的Function测试篇)

现在写程序写着写着对自己写的程序就没有信心了,代码量的上升,逻辑越来越复杂,非常需要单元测试(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),我们就来测试下这个加法能不能正常工作。

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

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


package com.waitingfy.android;

public class MyClass {
public int  sum(int a,int b) {
return a + b;
}
}

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

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

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

建立完后的项目结构:

我们注意到自动生成的包名称为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;

//非常关键的一点是继承了TestCase
public class TestMyClass extends TestCase {
MyClass myClass;

//测试类启动调用的方法,一般在这里初始化一些测试的条件,初始化类等。

@Override
protected void setUp() throws Exception {
super.setUp();
myClass = new MyClass();
}
//我们写的测试方法
public void testSum() {
Assert.assertEquals("2", myClass.sum(1, 1));
}

//测试类结束调用的方法,一般在这里释放资源等。

@Override
protected void tearDown() throws Exception {
super.tearDown();
}
}

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

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

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


Assert.assertEquals("2", myClass.sum(1, 1));

修改为:


Assert.assertEquals(2, myClass.sum(1, 1));

,就成功了,界面是绿色的。

好了先到这里。:)

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

Tags:

72

3 Responses to Android 中的单元测试例子 (普通Java类中的Function测试篇)

  1. […] For You 记录一些关于android的东西 Android 中的单元测试例子 (普通Java类中的Function测试篇) 20 五 Android 中的单元测试(使用 ActivityInstrumentationTestCase2 进行 Activity […]

  2. Azam说道:

    A little rationality lifts the qulaity of the debate here. Thanks for contributing!

Leave a Reply

Name and Email Address are required fields.
Your email will not be published or shared with third parties.