Android中的测试

##测试分类##
是否有源码:

  • 白盒测试:对源代码进行测试;
  • 黑盒测试:无需测试源代码

根据时间分类:

  • 单元测试:程序员自己写一个小测试模块,对自己写的源代码进行测试
  • 集成测试:程序员小团队内部进程集体测试
  • 系统测试:由专业的测试工程师完成
  • 回归测试:由专业的测试工程师完成

根据压力程度:

  • 猴子测试
  • 冒烟测试

##安卓单元测试##

对业务单元进行测试,主要集中在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
4
public void testAdd() throws Exception{
PersonService ps = new PersonService();
ps.add(1,2);
}

4)在outline窗口找到对应的方法以『android junit test』的方式运行该方法即可。

这里面有几个需要注意的点:

  • 业务类一定要放在业务包里
  • 测试类一定要放在测试包里
  • 测试方法的命名规则是在测试方法前面加上test的驼峰命名法
    这几个需要注意的点都不是强制性的规定,但是都是一些良好的编程习惯,一个优秀的程序员一定会遵循的规范。

##断言测试##

一般测试主要完成两方面的工作:

  • 对业务逻辑执行的是否正常进行测试
  • 对业务方法的返回值是否正确进行测试
    上面的第二项测试内容也叫做断言测试。断言测试其实调用了安卓提供的一个方法『Assert.assertEquals(expected, actual)』

依然是上面的例子:
首先准备一个业务方法:

1
2
3
public int add(int x, int y){
return x + y;
}

然后写测试方法:

1
2
3
4
5
6
public void testAdd() throws Exception{
PersonService ps = new PersonService();
int actual = ps.add(1,1);
//断言测试
Assert.assertEquals(2, actual);
}

这样就搞定了!