一、在eclips中创建一个Android工程,具体信息以下:java
二、配置单元测试环境,打开AndroidManifest.xml,具体代码以下所示:android
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.milan.junit" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="19" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.milan.junit.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> <!--使用单元测试库--> <uses-library android:name="android.test.runner"/> </application> <!-- 声明Android框架和目标测试包--> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.milan.junit" /> </manifest>
说明:app
一、<uses-library android:name="android.test.runner"/> 这句,放在application内部。框架
二、android:targetPackage 这个属性,通常为应用程序的包名,必须和xml中manifest节点的package同名。函数
三、建立一个包com.milan.service,这个包下面再建立一个类 Person,用于测试的时候调用。单元测试
package com.milan.service; public class Person { public int getAge(String age){ return new Integer(age); } }
四、在com.milan.junit包下面,建一个PersonTest类,代码以下:测试
package com.milan.junit; import com.milan.service.Person; import android.test.AndroidTestCase; public class PersonTest extends AndroidTestCase { ///用例1,传入非数字 public void test01(){ Person person = new Person(); person.getAge("milan"); } //用例2,传入数字 public void test02(){ Person person = new Person(); person.getAge("1"); } }
五、选中PersonTest.java,右键选择Run As 选择Android Junit Test 运行单元测试,如图:spa
从上图能够看到,test01的测试结果为失败。失败缘由为:java.lang.NumberFormatException: Invalid int: "milan",3d
test02的测试结果为经过。code
若是没有Junit运行结果,能够在eclips的Window菜单下,选择Show View--Other--Java--Junit 中打开。
六、运行单个测试用例
eclips的Window菜单下,选择Show View--Other--General--Outline打开大纲视图,右键测试用例,便可运行单个测试用例。如图:
同理,若是须要执行整个项目的测试用例,可选中整个项目,用Android Junit Test运行便可。
七、断言
当咱们得到程序的运行结果,咱们但愿Junit可以自动判断 将实际结果和指望结果是否一致。这个时候咱们就能够用到Junit自带的断言。
修改PersonTest类,为如下代码:
package com.milan.junit; import com.milan.service.Person; import android.test.AndroidTestCase; public class PersonTest extends AndroidTestCase { ///用例1,传入非数字 public void test01(){ Person person = new Person(); int i= person.getAge("milan"); assertEquals(1, i); } //用例2,传入数字,断言有message public void test02(){ Person person = new Person(); int i= person.getAge("1"); assertEquals("传入数字",2,i); } //用例2,传入数字,断言无message public void test03(){ Person person = new Person(); int i= person.getAge("1"); assertEquals(1,i); } }
而后运行结果为:
若是传入了message,一旦用例不经过,会在右边的错误详细里,列出message。
八、其余断言
JUnit提供丰富的断言,来知足咱们不一样的比对需求。按住Ctrl键,点击代码中的assertEquals,能够看到Assert类里面多支持的断言函数的参数类型:
你们有空能够多试试。这里就不一一讲解了。
其余信息
如出现Test run failed:Unable to find instrumentation target package错误
是由于 android:targetPackage="com.milan.junit" 必须和
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.milan.junit"
package相同的包名