在实际开发中,开发android软件的过程需要不断的进行测试。而是用Junit测试框架,则是正规android开发的必用技术,在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性。
第一步:首先在AndroidManifest.xml中加入下面红色代码(把单元测试库引进到此项目中):
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner"/> ----引进单元测试库
......
</manifest>
<uses-sdk android:minSdkVersion="15" />
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.hw.hua" android:label="Tests for My App"/>
解释:第二句红色部分:
1、配置单元测试框架的入口类
2、android:name="android.test.InstrumentationTestRunner"这部分不用更改
3、但android:targetPackage属性指定单元测试类所在的包,也就是说,单元测试类建在那个包下,就应该把那个包赋给这个属性。这个包一般是和应用的包同名。
4、android:label="Tests for My App" 属性可要可不要,名称可要随便取
第二步:
编写单元测试代码(在Outline中选择要测试的方法,右键点击“Run As”-->"Android Junit Test")
代码如下:
manifest.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.hw.hua"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="15" />

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner"/>
<activity
android:name=".AccessOtherApp"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.hw.hua" android:label="Tests for My App"/>

</manifest>

业务类:
package com.hw.service;

public class PersonService {
public void save() {
String str = "aaa";
int i = new Integer(str);
}
}

测试类:

package com.hw.hua;

import com.hw.service.PersonService;

import android.test.AndroidTestCase;
//junit3框架要求,方法名称前要加test
//方法最好抛出异常处理,在junit3框架中其实是有一个try、、、catch包在方法外面的,当程序出错时,单元测试框架会捕获异常,并打印在控制台
public class PerserServiceTest extends AndroidTestCase {
public void testSave() throws Throwable {
PersonService service = new PersonService();
service.save();//检验save()方法运行是否正常
}
}

此时,这个程序会报错,深红色代表出错。

单元测试除了要判断方法执行是否成功外,还要判断方法的处理结果是否符合我们期望的要求,如下:
将上面的修改:
业务类:
package com.hw.service;

public class PersonService {
public int save() {
String str = "77";
int i = new Integer(str);
return i;
}
}

测试类:使用了Assert


执行后,报错:
junit.framework.AssertionFailedError: expected:<55> but was:<77>
at com.hw.hua.PerserServiceTest.testSave(PerserServiceTest.java:14)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:537)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1551)

解释:
业务类会返回一个值,假如,你写代码的目的是为了让其返回55,你就要测试返回结果是不是55,通过Assert.assertEquals(55, i);判断处理结果是否正常。
如果报错,说明断言的值和返回的值不同,就可以知道,业务类中的逻辑不对


当在Outline中选择要测试的方法,右键点击“Run As”-->"Android Junit Test"时,会把单元测试项目部署到模拟器,并在模拟器中运行这个单元测试用例。

更多相关文章

  1. 重温Android四大组件(一)—Activity的生命周期
  2. Android中保存数据常用的方法
  3. Android共享元素
  4. Android实现照片选择显示-从相册选择或拍照选择
  5. 3G应用开发之Android(安卓)传智播客 基础知识总结
  6. Android开发常用开源库
  7. 【Android】Android(安卓)线程&进程模型
  8. android中webView使用总结---飞速浏览器实现基础.
  9. [置顶] Android(安卓)Touch事件的分发过程

随机推荐

  1. 我扒了半天源码,终于找到了Oauth2自定义处
  2. 面对成百上千台服务器产生的日志,试试这款
  3. 还在百度Linux命令?推荐一套我用起来特顺
  4. 被我用烂的DEBUG调试技巧,专治各种搜索不
  5. SharePoint 排错: SharePoint Online Ass
  6. 还在手动部署SpringBoot应用?试试这个自动
  7. 微服务应用性能如何?APM监控工具来告诉你!
  8. Mall 电商实战项目发布重大更新,全面支持S
  9. 不要再重复造轮子了,这款开源工具类库贼好
  10. Could not initialize derby.jdbc.Autolo