参考自:http://blog.sina.com.cn/s/blog_90cdca4c01015wow.html
Android 采用的单元测试框架为android 自带的junit,具体见Android API。
单元测试:必须有个预期输出值,有个实际输出值,验证预期输出值与实际输出值是否相同,因此被测试的方法肯定会返回一个值
Eclipse下的单元测试,是在模拟器中运行的,因此即使测试某个方法,也会运行模拟器
说明简单测试用例用到的几个类:
Assert 当assert失败时才会打印信息,否则无打印信息
TestCase 继承Assert,若某个类继承TestCase, 该类里可写多个测试方法,每个测试方法会调用Assert的assertEquals()方法来测试方法
AndroidTestCase继承TestCase,若被测试方法需要依赖Activity Context,则继承AndroidTestCase
测试DEMO
1、Manifest.xml 加入权限
<application>标签里加入
<uses-library android:name="android.test.runner" />
<application>标签外加入
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.danny.test" >
</instrumentation>
targertPackage为需被测试的方法所在包,一般与应用同一个包
public class DataFormatUtils {
public static double formatDistance(double ori){
BigDecimal bg = new BigDecimal(ori);
double result = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
return result;
}
public static double add(double n1, double n2) {
return n1 + n1;
}
}
3.测试用例
public class DataFormatUtilsTest extends AndroidTestCase{
private String TAG = DataFormatUtilsTest.class.getSimpleName();
public void testAdd() throws Throwable{
double actual = DataFormatUtils.add(2,2);
double expected = 4;
assertEquals(expected, actual);
}
}
assertEquals()方法实际为Assert的方法,由于AnroidTestCase继承了Assert,因此可使用Assert的assertEquals方法
Eclipse 运行单元测试:选中测试用例,右击run as ...android junit Test
若实际与预期值不相同,Junit控制台会打印 Failure Trace,如下
junit.framework.AssertionFailedError: expected:<5.0> but was:<4.0>
预期为5 实际输出值为4
否则,Junit Failure Trace不会打印信息
Assert 当assert失败时才会打印信息,否则无打印信息
TestCase 继承Assert,若某个类继承TestCase, 该类里可写多个测试方法,每个测试方法会调用Assert的assertEquals()方法来测试方法
AndroidTestCase继承TestCase,若被测试方法需要依赖Activity Context,则继承AndroidTestCase