写博客辛苦了,转载的朋友请注明出处哦,finddreams:(http://blog.csdn.net/finddreams/article/details/41120607)
一个APP软件开发的一般流程:需求分析——设计文档——建立模型——功能实现——测试修改——发布。
记得有一篇文章说过,做一个APP的开发周期最好是控制在三个月内,花3个月的时间开发,先打入市场,收集回馈再加以改善。其中时间安排是开发为一个月,而测试和调整则需要两个月。
测试是软件开发中非常重要的一环,对于我们的APP开发也同样如此。但对于初学者,我们不是很清楚测试该如何做,下面就给大家介绍一下Android开发的测试:
任何程序的开发都离不开单元测试来保证其健壮和稳定。Android程序自然也不例外。从Android SDK 0.9开始,就有了比较成熟的测试框架,但是直到目前最新的1.1版本,也没有详细的文档介绍这个内容。所以今天我就给大家总结一下:
做过Java开发的人都知道JUnit是用来做单元测试的,JUnit是指从Apache基金会下载的junit.jar里提供的一系列单元测试功能。Android是基于Java的,所以测试框架的特性也是基于JUnit。使用JUnit测试框架,是正规Android开发的必用技术,在JUnit中可以得到组件,可以模拟发送事件和检测程序处理的正确性。单元测试是嵌入到项目中,也可以作为一个单独的项目针对某个具体项目进行测试。
在Eclipse中新建一个单元测试项目,点击下一步,填写工程名。
然后在下一步的时候需要你选择一个测试的目标工程,可以选择另外一个项目,也可以只在本项目中测试。他们的区别是选择另外一个项目可以测试其他项目中的数据。
完成后,如果选择测试其他项目我们可以在AndroidManifest.xml文件中可以看到如下内容:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.finddreams.blacknum.test" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.finddreams.blacknum" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <uses-library android:name="android.test.runner" /> </application> </manifest>
如果是选择自身做完测试项目,就会看到
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.finddreams.test" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.finddreams.test" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <uses-library android:name="android.test.runner" /> </application> </manifest>
为了测试我们先创建一个简单点类,主要功能是打印出测试通过log:
package com.finddreams.test; import android.util.Log; public class AppDemo { public void testMethod(){ Log.i("Tag", "测试通过"); } }
接下来是创建测试类,测试的类要继承android.test.AndroidTestCase 代码如下:
package com.finddreams.test; import android.test.AndroidTestCase; public class AppTest extends AndroidTestCase{ public void test(){ AppDemo demo =new AppDemo(); demo.testMethod(); } }
然后点击右键Run As 选择Android JUnit Test 运行,就可以在右侧看到结果了:
绿色条表示成功,如果出现了红色条,表示出血了,程序有错误,需要及时改正过来。
把测试框架嵌入到自己项目中去,其实也很简单,只需要在AndroidManifest.xml中加入如下代码就可以了:
如果你不记得怎么写的话,可以先按照第一步来建一个独立的测试项目,就能够在AndroidManifest.xml中找到如上代码,复制粘贴到自己的工程中去。注意:android:targetPackage 必须换成你所要测试项目的包名。
TestCase 基类:
TestCase 这个类用于在Android担当所有独特的TestCase的基类的作用,它是一个Abstract Class。
包含访问系统对象(如Context)的方法。使用Context,你可以浏览资源,文件,数据库等等;
——ApplicationTestCase
测试整个应用程序的类。它允许你注入一个模拟的Context到应用程序中,在应用程序启动之前初始化测试参数,并在应用程序结束之后销毁之前检查应用程序;
——ProviderTestCase2
测试单个ContentProvider的类。因为它要求使用MockContentResolver,并注入一个IsolatedContext,因此Provider的测试是与OS孤立的;
—— ServiceTestCase
测试单个Service的类。你可以注入一个模拟的Context或模拟的Application(或者两者),或者让Android为你提供Context和MockApplication;
——ActivityTestCase
Activity测试类的基类。我们测试activity时就是继承了这个类来编写一个自己的测试类进行测试,也是项目当中最长用到的。