今天看到一篇日志
最好不要滥用mock对象,谈到了mock object时造成测试代码的难以维护,以及这样一个观点:单元测试应尽量避免白盒测试,而使用黑盒测试。
对于测试代码的维护问题,我目前尚未大量使用unit test,没有什么体会,就目前而言,我觉得使用mock object还是比较简单的,代码也很清晰,应该没有维护之虞。
对于“单元测试应尽量避免白盒测试,而使用黑盒测试”,我有点疑惑了,如果单元测试不使用白盒测试,那么什么样的测试才能使用白盒测试呢?什么时候才能使用白盒测试呢?单元测试把测试范围局限在一个功能单元之内了,应该说是最细的粒度了,此时应该是测试业务逻辑最好的时候啊。文章把Rod Johnson给搬出来了,回去我再查查Rod Johnson的Expert One-on-One看看。
关于什么时候该使用mock object,以下观点不错:
使用Mock Object的场合
实际对象的行为还不确定。
实际的对象创建和初始化非常复杂。
实际对象中存在很难执行到的行为(如网络异常,数据库异常等)。
实际的对象运行起来非常的慢。
实际对象是用户界面程序。
实际对象还没有编写,只有接口等。