AOP@Work: 用Contract4J进行组件设计-用契约式设计和AspectJ改进软件 - 编程入门网
补的。契约式设计 的 一个主要优势是,它在接口或类本身当中提供了关于预期行为的显式信息。对于 组件开发人员和客户来说,结果实际上就是一种能够用编程方式进行测试的文档 。契约式设计也做了显式的合约定义,而在单元测试中这些更隐式。我喜欢交替 使用这两种技术,特别是在使用难以进行单元测试的技术(例如 EJB2 bean)时 。很快就会看到,Contract4J 添加了强迫使用约束的特性,这比 Junit 测试中 隐式的非正式文档有相当大的优势。
Contract4J 简介 Contract4J 是一个开源的开发人员工具,它用 Java 5 标注(请参阅 参考 资 料)实现契约式设计。在幕后,它用方面在应当执行测试的程序连接点处(例如 ,对方法的调用)插入 “建议”,它还对这些测试的失败进行处理,即终止程 序 执行。 再来看 BankAccount 接口,但是这次使用 Contract4J 标注。注意,我用黑 体把原来的代码突出,并且对有些字符串作了换行,以便更加清晰: 清单 1. 使用 Contract4J 标注的 BankAccount
AOP@Work: 用Contract4J进行组件设计-用契约式设计和AspectJ改进软件(3)时间:2011-09-07 IBM表 1 定义了清单 1 中看到的关键字: 表 1. Contract4J 关键字示例
BankAccount 合约 根据前一节学到的内容,清单 1 中的标注应当不再神秘。@Contract 标注表 示拥有合约规范的接口(或类)。@Pre、@Post 和 @Invar 标注分别定义前置条 件测试、后置条件测试和不变条件测试。还会注意到清单 1 中的测试是定义成 字 符串的 Java 表达式,结果为 true 或 false。 如果遗漏了测试表达式,Contract4J 会根据上下文使用合理的默认设置。例 如,字段的默认不变条件要求字段不能为空。类似地,默认的方法前置条件要求 所有非基本 |
||||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |