##测试分类##
是否有源码:
- 白盒测试:对源代码进行测试;
- 黑盒测试:无需测试源代码
根据时间分类:
- 单元测试:程序员自己写一个小测试模块,对自己写的源代码进行测试
- 集成测试:程序员小团队内部进程集体测试
- 系统测试:由专业的测试工程师完成
- 回归测试:由专业的测试工程师完成
根据压力程度:
- 猴子测试
- 冒烟测试
##安卓单元测试##
对业务单元进行测试,主要集中在dao层和service层
举例说明:
假如要测试cn.easydone.hello这个包中PersonService这个业务类中的add(int x, int y)这个方法。
步骤:
1)在AndroidManifest.xml清单文件的application节点里添加以下节点内容,引入测试的类库1
<uses-library android:name="android.test.runner"/>
2)在AndroidManifest.xml清单文件的application节点的外面添加以下节点内容,配置测试启动类,指定要测试的包1
2<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="cn.easydone.hello"></instrumentation>
3)创建cn.easydone.hello.test这个包,创建PersonServiceTest这个类,并且要继承AndroidTestCase这个类,在这个测试类中编写测试方法1
2
3
4public void testAdd() throws Exception{
PersonService ps = new PersonService();
ps.add(1,2);
}
4)在outline窗口找到对应的方法以『android junit test』的方式运行该方法即可。
这里面有几个需要注意的点:
- 业务类一定要放在业务包里
- 测试类一定要放在测试包里
- 测试方法的命名规则是在测试方法前面加上test的驼峰命名法
这几个需要注意的点都不是强制性的规定,但是都是一些良好的编程习惯,一个优秀的程序员一定会遵循的规范。
##断言测试##
一般测试主要完成两方面的工作:
- 对业务逻辑执行的是否正常进行测试
- 对业务方法的返回值是否正确进行测试
上面的第二项测试内容也叫做断言测试。断言测试其实调用了安卓提供的一个方法『Assert.assertEquals(expected, actual)』
依然是上面的例子:
首先准备一个业务方法:1
2
3public int add(int x, int y){
return x + y;
}
然后写测试方法:1
2
3
4
5
6public void testAdd() throws Exception{
PersonService ps = new PersonService();
int actual = ps.add(1,1);
//断言测试
Assert.assertEquals(2, actual);
}
这样就搞定了!