程序设计,实现之后的下一个环节就是单元测试了。对于位置闹铃小程序来讲,带着设备到处移动以测试监控点的状态迁移就是一个必经之路,但是如果所有环节都通过实地测试来解决,那将耗费大量的时间和体力。
我们的选择是,在实地测试之前,用尽量少地代价做好单元测试。
测试对象

我们的测试对象是上一篇文章中说明的监控点状态迁移逻辑,也就是上面序列图右下角的enterAlarmCheck函数。这个函数可以说是这个小程序地核心。它的调用关系如下。
- 系统调用index的onTimer函数(实际上是一个无名函数)。
- onTimer函数调用app的checkAlarms函数。
- checkAlarm函数调用app的checkAlarmsImpl函数
- checkAlarmsImpl调用util.getLocation函数取得现在的位置信息。
- checkAlarmsImpl取得每个监控点alarm并用getLocation取得的位置信息调用alarm的checkLocation方法
- alarm的checkLocation方法调用getDistance方法取得现在位置到监控点的距离。
- alarm的enterAlarmCheck根据最新的距离信息进行状态迁移处理。
测试方法
其他的都好说,这里唯一的测试难点就是位置变化,我们采用了最为简单粗暴地方式:直接修改alarm的getDistance方法。
函数的本来功能已经被屏蔽掉,直接修改为每次返回数组中的数字。通过修改数组的内容我们可以模拟各种运动情况。
也许你觉得修改uitl.getLocation函数也是一种方式,但是它有两个问题:一是这个函数有可能在其他地方被调用,二是生成的数据必须是经纬度,很麻烦。
其实getDistance这个函数就是为了单元测试才设计出来的。
单元测试是个技术活。
写在文章的最后
阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】
 

 
 
                     
            
        













 
                    

 
                 
                    