摘要:
测试驱动开发常用模式:1、命令:表示把计算作为一个对象而不是消息来调用(用于编写测试) 例如: interface Runnable public abstract void run(); //命令2、值对象(value object):通过创建其值,一经创建便永远不改变的对象来避免别名问题(用于编写测试) 别名的例子: 假设有一个Rectangle对象,根据rectangle计算出它的面积;后来有人向我要rectangle,我就把它给了他们; 但是几分钟后,这个rectangle对象已经在不知情的情况下改变了,以前我计算出来的面积却过时了。 作者倾向的解决方案... 阅读全文
摘要:
Mock object(模拟对象):mock的特点: 1、提供和被模拟对象相同的接口 2、会检查每个调用的上下文以下几种情况可以考虑创建Mock 1、当被模拟的对象提供不确定的结果时(例如:当前时间或当前温度) 2、很难创建或重现的状态(例如:网络错误) 3、很慢(例如:数据库,需要在测试前初始化) 4、还不存在或者也许会改变的行为 5、为了测试想提过一些额外的信息和方法时 当测试一个依赖于昂贵且复杂的资源的对象时,可尝试创建一个这些资源的模拟版本。 mock对象鼓励你仔细思考各个对象的可见性,减少设计中的耦合,也给项目增加风险:模拟对象需要和现实对象的行为一样,因而是需要对... 阅读全文