1、Android上的单元测试,Junit简介,在 Java下做单元测试的必用工具 提供了一整套单元测试的框架 测试用例的管理(TestSuite)。 测试代码的编写(TestCase)。 测试的环境的建立(setUp、tearDown)。 测试结果的判定(assert)。,在Android下能使用JUnit?,Android提供了junit.framework包 只测试一些和android无关的东西,如业务逻辑、数据封装、数值计算,可使用Junit。要将classpath选项里的android library改成jre,并且添加junit.jar。 测试关于Android系统中的API,如Act
2、ivity界面、单击界面上的按钮、选择菜单等不能使用,测试Activity需要些什么?,创建Activity并控制Activity的生命周期 提供同步的能力,因为Activity的创建是异步的,当调用startActivty()后,这个函数立刻返回,而不是等待Activity创建 好后才返回,Android下TestCase的包结构,包结构,Android下TestCase的类说明,Instrumentation简介,一种没有图形界面,具有启动能力,用于监控其他类的工具类 执行application instrumentation代码的基类 在任何应用程序运行前初始化 可以监测系统与应用程序之
3、间的交互 在AndroidManifest.xml中的标签进行声明,Instrumentation的功能,添加、删除ActivityMoniter 控制Application、Activity的创建与生命周期 控制Instrumentation的运行 发送按键、滚动球等事件消息到当前窗口 同步某些操作(等待Activity创建完毕、等待主线程空闲、等待某个操作执行完毕),使用instrumentation单元测试的实例,编写需要测试的主体代码activity 编写测试类 修改manifest文件 运行,编写需要测试的主体代码activity,package com.android.ut; im
4、port android.app.activity; import android.os.bundle; public class androidut extends activity public void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); setcontentview(r.layout.main); public int add(int a, int b) return a + b; ,编写测试类,package com.android.ut.test; import com.an
5、droid.ut.androidut; import android.test.activityinstrumentationtestcase; public class testapp extends activityinstrumentationtestcase public testapp() super(“com.android.ut“, androidut.class); public void testsum() assertequals(5, getactivity().add(2, 3); ,修改manifest文件,也可以将instrumentation定义成一个单独的apk
6、,运行,在Development的Instrumentation内运行 命令行运行 adb shell am instrument w XXX,测试一个包 adb shell am instrument -w packageName/android.test.InstrumentationTestRunner 测试一个TestSuite adb shell am instrument -e class packageName.MyTestSuite -w packageName/android.test.InstrumentationTestRunner 测试一个TestCase adb shell am instrument -e class packageName. MyTestCase -w packageName/android.test.InstrumentationTestRunner 测试一个方法 adb shell am instrument -e class packageName. MyTestCase#testMethod -w packageName/android.test.InstrumentationTestRunner,