最近因为项目组底层引擎更换,需要用到大量的数据来查证新旧引擎的优劣,所以需要用到自动化测试来跑大量的数据,因此我也花了好些时间来了解学习如何使用自动化测试,现在项目测试工作也基本完成,因此一个总结关于android的单元测试。
android源码中引入了java单元测试的框架(android源码目录:libcore\junit\src\main\java\junit\framework中可见),然后在java单元测试框架的基础上扩展属于android自己的测试框架。查看Android Test API 后发现,通过android测试类可以实现对android的基本组件(Activity,Service,ContentProvider,application)进行测试。
当然,要进行Android单元测试,首先必须有android开发环境,至于是eclipse平台还是androd-studio平台,这个就随你喜欢咯。
1、建立一个Android Test Project,点击File--new--project--Android--Android Test Project:
点击next,在Project Name那里填写工程名字,然后点next,选择你需要测试的工程项目:
点击finish,此时你左边的工程目录下就会多出一个你刚刚建的project项目:
接着打开该项目的AndroidManifest.xml,可以看到
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.enphoneh.fileexploser.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="16" />
<instrumentation
android:name="android.test.InstrumentationTestRunner" <!-- 这里多了个instrumentation,targetPackage就是我们需要测试的项目-->
android:targetPackage="com.enphoneh.fileexploser" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner" /> <!-- 这里引用了android测试库-->
</application>
</manifest>
接着打开我们的项目,点击src,这里会自动生成一个.test结尾的包,我们点击包,右键,新建一个类,继承于AndroidTestCase:
接着需要重写setUp方法,在setUp中初始化所有需要测试的对象,因为每跑一个测试方法,首先执行的都是该testcase的setUp方法,因此必须在这里对数据进行初始化:
public class MyTestCase extends AndroidTestCase {
int a,b;
MainActivity activity = null; //MainAcitivity就是还要测试的项目中的一个acitivity
@Override
protected void setUp() throws Exception {
init_test(); //初始化测试数据
super.setUp();
}
protected void init_test(){
a = 3;
b = 5;
activity = new MainActivity();
}
接着就可以写测试方法了,测试方法一定必须textXXXXX,即必须是以test开头的才能跑得起来,否则是不会跑到的
public class MyTestCase extends AndroidTestCase {
int a,b;
MainActivity activity = null; //MainAcitivity就是还要测试的项目中的一个acitivity
@Override
protected void setUp() throws Exception {
init_test(); //初始化测试数据
super.setUp();
}
protected void init_test(){
a = 3;
b = 5;
activity = new MainActivity();
}
//test开头的android test unit测试入口
public void testGotoParent(){
activity.goToParent("/");
}