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。
android菜鸟学习笔记15----Android Junit测试的更多相关文章
- android菜鸟学习笔记30----Android使用百度地图API(一)准备工作及在应用中显示地图
1.准备工作: 百度地图API是免费开放的,但是需要申请API Key: 1)先注册一个百度开发者帐号 2)进入百度开放服务平台http://developer.baidu.com/ 3)进入LBS云 ...
- android菜鸟学习笔记29----Android应用向用户发送提示信息的方式总结
常见的向用户发送提示信息的方式有3种,分别为: 1)发送Toast信息 2)弹出对话框 3)发送通知 总结如下: 方式1:发送Toast信息: 这种方式最简单,在之前的学习中多次使用过.Toast是在 ...
- android菜鸟学习笔记31----Android使用百度地图API(二)获取地理位置及地图控制器的简单使用
1.获取当前地理位置: Android中提供了一个LocationManager的类,用于管理地理位置.不能通过构造函数获取该类的实例,而是通过Context的getSystemService(): ...
- android菜鸟学习笔记28----Android中的Service生命周期及本地和远程服务绑定的实现
Service是Android中长期在后台运行的没有界面的组件,使用服务的优势在于:能够提高进程的优先级,系统不容易回收掉进程,即便回收了,内存充足的时候,会把进程重新创建. 1.服务的简单使用示例: ...
- android菜鸟学习笔记24----与服务器端交互(一)使用HttpURLConnection和HttpClient请求服务端数据
主要是基于HTTP协议与服务端进行交互. 涉及到的类和接口有:URL.HttpURLConnection.HttpClient等 URL: 使用一个String类型的url构造一个URL对象,如: U ...
- android菜鸟学习笔记21----ContentProvider(一)ContentProvider的简单使用
ContentProvider是Android四大组件之一,它用来封装数据,并通过ContentResolver接口将数据提供给其他应用.只有当需要在多个应用之间共享数据时才会用到ContentPro ...
- android菜鸟学习笔记17----Android数据存储(一)文件读写
假如有如下需求,要求能够记录用户输入的用户名和密码,下次登录时,能直接获取之前保存的用户名密码,并在相应的EditText中显示. 要保存用户输入的数据,最先想到的应该就是文件读写了. 通过对andr ...
- android菜鸟学习笔记14----Android控件(三) ListView的简单使用
MVC模式: MVC的基本原理就是通过Controller连接View和Model.当View中所显示的数据发生变化时,会通知Controller,然后由Controller调用Model中的相关方法 ...
- android菜鸟学习笔记8----Activity(一)
Activity是android应用程序中重要的组件之一,常听到的android四大组件是Activity.Service.BroadcastReceiver和ContentProvider.它间接继 ...
随机推荐
- Codeforces 762A k-th divisor(数论)
题目链接:k-th divisor 求出N的第K大因子,满足N <= 10^15,K <= 10^9 直接暴力…… #include <bits/stdc++.h> using ...
- VS如何反汇编
1. 打开反汇编窗口:调试模式下,按Ctrl+F11.2. 术语: 2.1 ESP(Extended Stack Pointer): 堆栈指针,寄存器存放当前线程的栈顶指针: i.e: move eb ...
- SecureCRT字体大小随屏幕调节设置
- Linux下设置开机启动
新配置了vsftpd 需要设置ftp开机启动,linux新手,还不是很熟悉linux下的操作! 查询后发现命令是: chkconfig vsftpd on chkconfig命令用于设置运行级别 ...
- Code signing is required for product type Unit Test Bundle in SDK iOS 8.0
I fixed the issue (temporarily) by going to Edit Scheme, then in the Build section, removing my unit ...
- 【mob】Android短信验证+源码
在很多的应用当中,都涉及到了短信验证的功能,比如在注册或者找回密码的时候,那么我们如何通过第三方的平台来完成这个功能呢? 本面博文就实现短信验证,来做一个小的栗子. 第一步-下载开发包 第二步-将SD ...
- 如何破解linux用户帐号密码二
转载 0x01 前言: 今天拿了个linux的主机,提下来了,以前提成root之后就没深入过,这次想着先把root密码破解出来: 以前交洞的时候只是单纯证明存在/etc/passwd和/etc/sha ...
- 转:使用Fabric自动化你的任务
转:http://www.cnblogs.com/holbrook/archive/2012/03/05/2380398.html fabric是什么? Fabric是一个Python库,可以通过SS ...
- Codeforces445A_DZY Loves Chessboard(预处理)
DZY Loves Chessboard time limit per test 1 second memory limit per test 256 megabytes input standard ...
- JAVA Eclipse如何安装Swing
查看自己的Eclipse版本 打开WINDOWBUILDER的下载页面,找到自己对应版本的下载地址,注意只是一个下载地址,不是要下载东西 http://www.eclipse.org/window ...