一.单元测试简介
在android的开发的过程中,经常需要对业务方面的代码进行测试,熟悉java的人都知道junit, 在android中google提供了基于junit为android进行了优化得自动化框架junit,在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性,在java中使用junit编写测试用例,我们需要继承TestCase,在android中需要继承AndroidTestCase。
二.环境搭建
1. 业务类
业务类中写了add函数,Junit来测试add函数的正确性。
<span style="font-family:Times New Roman;">package com.mxy.service; public class CalcService { public int add(int a,int b) { System.out.println("执行了加方法"); return a + b; } }</span>
2. 测试类
测试类继承了AndroidTestCase 类,写了testAdd函数,注意测试类中函数必须以test开头,返回值为void,类型为public 。
<span style="font-family:Times New Roman;">package com.mxy.test; import com.mxy.service.CalcService; import android.test.AndroidTestCase; public class CalcServiceTest extends AndroidTestCase { public void testAdd() { CalcService cal = new CalcService(); int result = cal.add(5,3); System.out.println(result); assertEquals(8, result); } }</span>
3. 配置AndroidManifeset.xml
在<applicetion />标签中添加:
<span style="font-family:Times New Roman;"><uses-library android:name="android.test.runner"/></span>
在<mainfest />标签中添加:
<span style="font-family:Times New Roman;"><instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.uicc.cloudservice" android:label="Test for my app"/></span>
android:targetPackage的包名必须和manifest 标签的package一致。
三.问题及解决方案
1. 错误:Warning: No instrumentation runner found for the launch, using android.test.InstrumentationTestRunner.
原因:模拟器不能记住Androidmanifest的配置,在运行时需要重新设置运行配置。
解决步骤如下:
(1).在工程或者测试类名字上点击右键,选择properties
(2).在Run/Debug setting中选择要运行的工程名字,点击右边的Edit,进入Edit launch configuration properties界面,在Test选项卡中的instrumentation runner后面的下拉列表中选择android.test.InstrumentationTestRunner 。
(3).重新运行该测试单元即可。
2. android:targetPackage的包名必须和manifest 标签的package一致。否则会出现找不到包的错误。
四.参考网址
1. http://blog.csdn.net/mengxiangyue/article/details/20568433 环境搭建
2. http://blog.csdn.net/you12345678901234567/article/details/7632807 错误解决方案