1.4 测试的种类
基于被测对象的不同,有好几种不同的测试方法。但是无论采用哪种测试方法,测试用例都包含执行条件和执行结果,执行结果返回True或者False来表示用例是否正确。
1.4.1 单元测试
单元测试,指的是程序员在开发阶段写的测试用例。这种测试用例需要将被测对象独立隔离起来,也就是mock掉外部关联对象。单元测试用例应用是可以重复执行的。这也是为什么我们常把单元测试和mock对象关联在一起。因为你要通过mock对象来模拟外部交互从而达到隔离被测对象的目的。当然,这样的用例可以重复执行任何次数。例如,假设你要从数据库中删除某些数据,但是下一次执行这个用例时这些数据还需要用,因此不想这些数据真正被删除,这时候mock数据库的返回,假装数据已经删除成功了。
Junit是约定俗成的标准单元测试框架。它是一个简单、开源的自动化单元测试框架,由ErichGamma和KentBeck两位作者创建。
Android要用Junit 3。这个版本没有注释,而是通过内部自查来感知测试用例的。一个典型的Junit测试用例写法如框1.1中所示的代码,其中测试方法用高亮度显示:
框1.1 Junit测试代码样例
/** * Android Application Testing Guide */ package com.example.aatg.test; import JUnit.framework.TestCase; /** * @author diego */ public class MyUnitTests extends TestCase { private int mFixture; /** * @param name test name */ public MyUnitTests(String name) { super(name); } /* (non-Javadoc) * @see JUnit.framework.TestCase#setUp() */ protected void setUp() throws Exception { super.setUp(); mFixture = 1234; } /* (non-Javadoc) * @see JUnit.framework.TestCase#tearDown() */ protected void tearDown() throws Exception { super.tearDown(); } /** * Preconditions */ public void testPreconditions() { } /** * Test method */ public void testSomething() { fail("Not implemented yet"); } } |
如果你购买了Packt书,可以访问http://www.PacktPub.com,在个人账户中下载样本源代码。如果你是从其他地方购买的书,可以访问http://www.PacktPub.com/support来注册用户,然后我们将源码文件直接发E-mail给您。
我们将在下一节详细阐述测试用例的每个细节。
1.测试套件
测试套件是个为人熟知的名词,它表示执行用例的标准流程模式。每个测试用例都用同一套标准流程。因此,它也是测试用例设计的基础。
通常情况下,按照Android的约定,它由一系列成员变量构成。通常以m开头,如: mActivity。但是,它也有一些扩展数据,作为数据库和文件系统操作的特殊入口。
2.setUp方法
这个方法是用来初始化测试套件用的。
通过重载这个方法,你可以新建对象,初始化元素。在每个测试用例执行之前,这个SetUp方法都会执行一次。
3.tearDown方法
tearDown方法是在测试套件中最后执行的函数。
在测试用例执行过程中,会初始化一些对象,这些对象可以在tearDown函数中进行销毁。因为tearDown函数是每个测试用例最后必须执行的,是销毁对象的最佳阶段。
比如:你可以在tearDown中释放掉数据库连接以及网络连接。
Junit设计的流程是这样的:首先,将整个库的用例都编译完。然后,在第二阶段再执行测试用例。因此,在测试执行过程中,执行器对所有用例都有强依赖。也就是说,对于那些用例很多、耗时很长的用例来说,在所有用例完成之前,是不会对变量、对象进行回收的。这点在Android测试中特别重要,因为在某些设备上测试失败的原因不是因为固有的逻辑问题,而是因为用例执行太多导致资源不足了。
因此,在Android应用中,你若测试使用了额外的、有限的资源,比如Services服务或者contentProvides,那么,你应该注意要及时释放掉。在tearDown方法中,严格遵守将对象设置成null的规则,以便及时回收,避免一直占用资源,一直到所有用例跑完才释放。
本文选自《Android应用测试指南》第一章,本站经人民邮电出版社和作者的授权。
版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。