安卓测试框架的环境搭建
测试是开发很重要的一部分。有句话说,好的应用不是开发出来的,而是测出来的。虽然作为程序员我们并不需要很精通测试,但是我们还是需要了解一下测试的基本内容。
安卓中提供了一个测试框架给我们使用。我们只需要继承这个框架就可以进行单元测试。
准备工作
新建一个安卓项目,在新建两个类,一个用于做测试框架类,一个用于演示的工具类。
演示工具类没什么,只是为了演示而已。
这里我们重点说一下测试框架类。
环境搭建:
安卓中搭建测试框架类非常简单,只需要新建一个类,然后继承AndroidTestCase类就可以了。然后再清单文件中加入指令集和测试类库(这个我们看代码就可以了。)
运行方法:
所谓单元测试,就是要测试某一个方法你不用运行整个程序,只需要选择该方法,邮件 Run as Android Junit Test就可以运行。如果运行没问题,Junit框会显示绿色。如果有Bug,就会显示红色。
如图:
下面我们看看代码吧
首先清单文件
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.junit" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" /> <!-- 添加单元测试框架必须添加instrumentation这个指令集 这条属性表明用那个指令集,事实上也只有一个 android:name="android.test.InstrumentationTestRunner" 这条表明要测试那个包下的功能,注意,一个测试框架定义在哪里是没关系的, 测试哪里,靠的是下面的包定义,注意,下面还需要添加类库哦 android:targetPackage="com.example.junit" --> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.junit" > </instrumentation> <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" > </uses-library> <activity android:name=".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>
JAVA文件
package com.example.junit; /* * AndroidTestCase是用于做安卓单元测试的类。 * 所有单元测试,就是可以不用运行整个程序,单独去测试某个方法。 * 安卓通过继承AndroidTestCase就可以实现这个功能。 * 通过右键某个方法,run as Android Junit Test就可以运行 * * 注意,运行测试框架要在清单文件里面添加指令集和指定所使用的类库 * * */ import android.test.AndroidTestCase; public class MyTestCase extends AndroidTestCase{ public void test(){ Test.add(2, 6); //assertEquals()断言,第一个参数表示期望值,第二个参数表运算值 assertEquals(7, 8); } }
被测试类
package com.example.junit; public class Test { public static int add(int a,int b){ return a+b; } }