Android/OPhone单元测试指南
作者:网络转载 发布时间:[ 2012/10/29 9:44:37 ] 推荐标签:
下图是为com.example.android.snake.SnakeView写的SnakeViewTest的片段:

如图所示,SnakeViewTest中有一个test01InitialCondition()方法,在这个测试用例中检查了所有在setUp()中定义的初始条件的正确性。这是推荐的测试方式。因为setUp()中如果有错误,会影响所有测试用例的结果。由于JUnit框架是按照test后面的字母排序决定测试方法的执行顺序,因此示例中使用了test01这样的前缀以使该用例第一个被执行。
SnakeViewTest中使用了util.setStatusText()和util.getStatusText()方法。这里的util是测试包中TestUtil类的实例。将测试中用到的一些公用方法放到一个类中管理,有助于提高代码的复用度,降低被测应用代码变化后对测试代码的影响。
下图是TestUtil类的内容:

对于被测类中的protected和private类型的变量和方法,可以用反射的方法访问,如getStatusText() 和setStatusText()。
在一般的JUnit单元测试时,会建议测试代码和被测代码的包名保持一致,以便于访问protected类型的变量和方法。OPhone单元测试代码也可以放在与被测代码同名的包中,方案如下:
1、测试代码放在单独的工程中,该工程的包名与被测代码包名一致;
2、在被测应用代码下新建目录,如tests/src,在该目录下增加与被测代码使用相同包名的测试代码,并将该目录添加到整个工程的编译路径中。
但这两种方案都有一个共同的缺点:需要修改被测应用的代码,如被测应用的AndroidMenifest.xml中必须增加uses-liibray和Instrumentation信息。当需要特殊的测试资源时,方案2还必须修改被测应用的resource资源,并不能得到单独的测试apk。

sales@spasvo.com