转帖:Android单元测试
上一篇 /
下一篇 2010-10-18 14:15:03
/ 个人分类:软件测试(Android)
==================== 发帖说明 ====================
1)此贴为”
转帖“,原帖地址为:http://www.51testing.com/html/87/n-129087.html
2)若转帖请保留此帖说明,或注明原帖出处,多谢!
=================================================
如果想在
android里面做
单元测试,有两条基本的路子可行。
第一, 就是java程
序员最为熟悉和常用的JUnit, 但是由于目前android sdk (version 1.1)中只是提供了stubbed
methods/classes,没有具体的实现代码,所以如果用JUnit的话,我们需要在运行单元测试时,一定要
用JDK来运行,利用java命令来启动JUnit的某个Runner。如果是用Eclipse的话,可以在Run
Configuration里新建一个JUnit。但是一定要记得在Classpath选项卡里将Bootstrap Entries中的Android
Library改成JRE,并且添加junit.jar。具体的设置可以参考:http://developer.android.com/guide
/appendix/faq/troubleshooting.html#addjunit。
而且,更为遗憾的是,这种方法运行的JUnit运行在JDK之上的,而不是android,所以,只能测试一些和android无关的东西,比如业务逻
辑,数据封装,数值计算等等。并不能测试android api。
第二, 采用Instrumentation.
Android单元测试的主入口是InstrumentationTestRunner。它相当于JUnit当中TestRunner的作用。你可以将
Instrumentation理解为一种没有图形界面的,具有启动能力的,用于监控其他类(用Target Package声明)的工具类。任何想成为Instrumentation的类必须继承android.app.Instrumentation。
下面通过一个实例来看一下如何通过Instrumentation来做单元测试。
Step 1.首先编写需要测试的activity:
package com.android.ut; import android.app.Activity; import android.os.Bundle; public class AndroidUT extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public int add(int a, int b) { return a + b; } } |
Step 2.
接下来编写测试类,其中主要来测试add()方法。我们在当前代码目录下,在新建一个文件夹,命名为test,并在里面新建了包com.android.ut.test。然后往里面新增加一个class.具体如下:
package com.android.ut.test; import com.android.ut.AndroidUT; import android.test.ActivityInstrumentationTestCase; public class TestApp extends ActivityInstrumentationTestCase<AndroidUT> { public TestApp() { super("com.android.ut", AndroidUT.class); } public void testSum() { assertEquals(5, getActivity().add(2, 3)); } } |
Step 3.最后一步就是要改一下Manifest文件。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.ut" android:versionCode="1" android:versionName="1.0.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".AndroidUT" 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>
<instrumentation android:targetPackage="com.android.ut"
android:name="android.test.InstrumentationTestRunner"
android:label="Test Unit Tests"></instrumentation> </manifest> |
需要注意的是,在这里面我加上了:
<uses-library android:name="android.test.runner" />
以及:
<instrumentation android:targetPackage="com.android.ut"
android:name="android.test.InstrumentationTestRunner"
android:label="Test Unit Tests"></instrumentation>
Step 4.运行
首先通过模拟器运行一下AndroidUT,然后在命令行终端中运行
adbshellam instrument -e class com.android.ut.test.TestApp -wcom.android.ut/android.test.InstrumentationTestRunner
这样你就可以看到测试结果了。
收藏
举报
TAG:
Android
android
软件测试
单元测试