android菜鸟学习笔记15----Android Junit测试
Android中的Junit测试与Java Junit测试有所不同,不能简单的使用标注……
假设写了一个MathUtils类,有两个静态方法:
public class MathUtils { public static int add(int x, int y){ return x+y; } public static int mul(int x, int y){ return x*y; } }
要测试这两个方法,可以在当前项目中新建一个类继承自AndroidTestCase,在该类中编写测试方法:
public class Test extends AndroidTestCase { @Override protected void setUp() throws Exception { // TODO Auto-generated method stub super.setUp(); } public void testAdd(){ assertEquals(5, MathUtils.add(2, 3)); } public void testMul(){ assertEquals(6, MathUtils.mul(2, 3)); } @Override protected void tearDown() throws Exception { // TODO Auto-generated method stub super.tearDown(); } }
注意重写父类的setUp()方法会在所有测试用例执行之前被调用,可以用来放置一些初始化操作;tearDown()方法在所有测试用例执行之后被调用,可以用来放置一些资源释放操作。
这时,Run as Junit Test,会出现如下错误:
008test does not specify a android.test.InstrumentationTestRunner instrumentation or does not declare uses-library android.test.runner in its AndroidManifest.xml
这是因为在执行之前,还需要在Manifest.xml文件中配置Instrumentation和uses-library。
修改Manifest.xml如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.csc.test" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="18" /> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="cn.csc.test"> </instrumentation> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <uses-library android:name="android.test.runner"/> </application> </manifest>
注意:instrumentation节点是防止manifest根节点下的,其targetPackage属性指定要测试的项目的包名,这里测试自己,所以写的是该项目自己的包名。
uses-library是放在application节点下的。
此时,再右击Test,选择Run as Android Junit Test
发现testAdd()和testMul()都被调用了。
若修改下testMul方法,将其重命名为mulTest(),再右击Test,选择Run as Android Junit Test
只有testAdd()方法被调用了,mulTest()没有被调用。
可以如同Java Junit一样,右击某个方法名,如mulTest(),run as android junit test:
这时,mulTest()自己执行了。
通过以上可以,执行测试类时,会自动把所有以test打头的方法都执行一遍的。要执行单个测试方法,可以右击要执行的方法名,然后run as android junit test。
上面的示例是在一个项目中自己测试自己,若要测试别的项目怎么办?
测试其他项目:
如,新建一个009mathutils项目,把MathUtils放到该项目的cn.csc.mathutils包下,然后要在008test中测试这个MathUtils的方法:
修改008test中的Manifest.xml中instrumentation中的targetPackage属性:将其设置为cn.csc.mathutils。
<instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="cn.csc.mathutils">
只是这样,还是不行的,因为cn.csc.mathutils中的MathUtils类在008test中是不可见的,这时需要进行一下build path的设置:
右击008test项目名,选择build path,configure build path:
在Projects选项卡中,点击add按钮,添加009mathutils项目,然后Ok即可。
此时,009mathutils项目中的类在008test中就可见了。然后就可以进行正常的测试工作了。
其实,要测试其他项目有更简单的方式:
新建一个Android Test Project :
new -> other
选择Android Test Project ,然后next
设置项目名称,然后next
选择要测试的项目,这里选择009mathutils,next
之后,默认,然后finish即可。
在创建该项目的过程中, Manifest.xml及build path都被Eclipse自动设置好了,然后直接进行测试工作即可。
补充:adb工具还能对项目进行冒烟测试(压力测试) 命令格式:adb shell monkey -p 要测试项目的包名 -v 测试事件数量
如: adb shell monkey -p cn.csc.lifecycle -v 1000
测试过程:
可以测试出程序中一些不易发现的bug。
最新文章
- 如何用ajax提交多组同样的数据(数组)到后台?
- Luke 6:43-45
- 超全!iOS 面试题汇总
- Windows Performance Monitoring with perfmon
- 第十周java 学习总结
- 成为JAVA GC专家系列
- Python默认模块 os和shutil 实用函数
- MQ队列
- windows phone URI映射
- stm32中.bss和.data段是在哪里初始化的
- U盘做启动盘后,如何恢复原始容量
- fread遇到1A则读取停止,发现是1A是文件截止符
- 正版Win7永不崩溃的秘密 解密系统备份!
- PS多形式的部分之间复制“笨办法”
- MongoDB应用介绍之前
- Android ListView 设置单选
- JVM内存管理概述与android内存泄露分析
- js或jquery实现点击某个按钮或元素显示div,点击页面其他任何地方隐藏div
- C# 响应微信发送的Token验证,文字、图文自动回复、请求客服对话.....
- spring aop的五种通知类型
热门文章
- 初学Docker容器网络不得不看的学习笔记
- 聚类kmeans算法在yolov3中的应用
- Unity -- 材质-Material和预设体-Prefabs
- Python操作sqlite数据库小节
- SilverLight-DataBinding-DataTemplates: 三、数据绑定 DataTemplates模板的使用(求助,没有到达实例效果,求高人指点迷津)
- 负样本采样及bias校准、ctr平滑
- 【前端GUI】—— 网站美工必须掌握的PS知识点&;思维导图
- [Django]中建立数据库视图
- 有用PHP依赖管理工具Composer新手教程
- java将一个或者多个空格进行分割