在android的开发的过程中,经常需要对业务方面的代码进行测试,熟悉java的人都知道junit,在android中google提供了基于junit为android进行了优化得自动化框架junit。在java中使用junit编写测试用例,我们需要继承TestCase,在android中需要继承AndroidTestCase。下面使用例子说明:
我们有如下的业务类:
- package com.mxy.service;
- public class CalcService {
- public int add(int a,int b) {
- System.out.println("执行了加方法");
- return a + b;
- }
- }
package com.mxy.service;
public class CalcService {
public int add(int a,int b) {
System.out.println("执行了加方法");
return a + b;
}
}
下面我们就可以编写一个测试类,如下:
- 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);
- }
- }
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);
}
}
这时候我们可以在项目上点击Run As---->Android Junit Test,这时候会将我们开发的app,安装到手机或者模拟器上,然后运行我们的测试用例。很不幸这时候我们会出现如下的错误:
- 01_junit does not specify a android.test.InstrumentationTestRunner instrumentation or does not declare uses-library android.test.runner in its AndroidManifest.xml
01_junit does not specify a android.test.InstrumentationTestRunner instrumentation or does not declare uses-library android.test.runner in its AndroidManifest.xml
这是因为我们还有写地方没有配置,这时候我们打开我们的AndroidMainfest.xml,添加如下红色(由于红色无法正常显示,这里表示<span style="color:#ff0000;">包围的代码)代码:
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.mxy"
- android:versionCode="1"
- android:versionName="1.0" >
- <uses-sdk
- android:minSdkVersion="8"
- android:targetSdkVersion="18" />
- <span style="color:#ff0000;"><instrumentation android:name="android.test.InstrumentationTestRunner"
- android:targetPackage="com.mxy"
- android:label="your tests label" /></span>
- <application
- android:allowBackup="true"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <span style="color:#ff0000;"><uses-library android:name="android.test.runner" /></span>
- <activity
- android:name="com.mxy.MainActivity"
- 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>
- </manifest>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mxy"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.mxy"
android:label="your tests label" />
<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" />
<activity
android:name="com.mxy.MainActivity"
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>
</manifest>
这时候我们再重新运行一下,会出现跟使用junit类似的界面。
可能大家感觉这样写起来太费劲,一个是需要自己添加AndroidMainfest.xml里面的代码,另外一个等到程序发布的时候还得删除测试代码(当然如果不删除也没问题,只是apk的包会大一点),这时候我们就可以直接建立一个Android Test Project。我们可以点击新建---->Android Test Project,然后根据向导选择已经存在的工程。建立好工程后,我们就可以直接新建测试用例了。
例子工程下载地址:http://download.csdn.net/detail/mengxiangyue/6997545
转载请注明出处:http://blog.csdn.net/mengxiangyue