敏捷开发中高质量Java代码开发实践 - 编程入门网
jMock,EasyMock,Mockito,PowerMock 等等。其中 Mockito 消除了对期望行为的需求,避免了这些代码的大量初始化。
图 8. Mockito 示例 在模拟对象过程中,先模拟一个需要调用的 List 对象 LinkedList,再设定 这个对象的行为,当调用 get(0) 的时候,返回”first”。这样,测试代码就 可以利用这个对象来测试我们的功能代码,需要调用和返回值的时候,可以顺利 的得到模拟对象的返回值。也需要对模拟对象进行错误情况的模拟,保证代码对 错误的处理的正确性。 敏捷开发中高质量Java代码开发实践(5)时间:2011-06-16 IBM / 王永魁 王兆丽 刘颖测试覆盖率分析 为了衡量单元测试的质量和覆盖的范围,需要对单元测试的代码进行测试覆 盖分析。常用的衡量测试覆盖率的指标主要有语句覆盖率、分支覆盖率、路径覆 盖率、条件覆盖率和方法覆盖率等。具体采用哪些指标可以根据项目的实际情况 来定,以避免因过高的指标增加了代码开发人员的工作量而影响了项目整体的进 度。 EMMA 是一款比较流行的开源 Java 测试覆盖率分析工具,支持类、方法、代 码行、基本代码块等多种类型的测试覆盖率分析,支持将覆盖率分析结果导出为 多种格式的报告,并采用多种颜色来高亮显示不同的覆盖率状态。EclEmma 是一 款基于 EMMA 的 Eclipse 插件,方便在 Eclipse IDE 中进行测试覆盖率分析。 如图 9,在测试用例写好后,可以在右键点击测试类,选择Coverage As -> JUnit Test. 图 9. 运行测试覆盖分析 单元测试跑完后,Coverage视图中会显示所选择的测试的覆盖率。双击打开 某一具体的类后,可以看到高亮显示的覆盖分析结果,如图 10 所示。红色代表 测试没有覆盖到该行,黄色表示部分覆盖,绿色的行表示该行在本次测试中被覆 盖到。 图 10. 查看测试覆盖分析结果 敏捷开发中高质量Java代码开发实践(6)时间:2011-06-16 IBM / 王永魁 王兆丽 刘颖在 Coverage 视图中可以通过点击鼠标右键将测试覆盖分析的结果导出成需 要的格式,例如 HTML。 图 11. 导出测试覆盖分析结果 图 12 显示了导出的 report。 图 12. 测试覆盖分析报告 为了保证单元测试的有效性和质量,可以规定一个测试覆盖率的下限,例如 所有的包和类的覆盖率必须达到 80% 以上。不过值得注意的是,不要单纯追求 高覆盖率,要同时注意测试用例的质量,如果测试用例本身就写的有错误,那么 即使测试覆盖率很高也没有意义。 敏捷开发中高质量Java代码开发实践(7)时间:2011-06-16 IBM / 王永魁 王兆丽 刘颖步骤四:持续集成 持续集成(Continuous Integration)是利用一系列的工具,方法和规则, 做到快速的构建开发代码,自动的测试化,来提高开发代码的效率和质量。利用 自动构建工具,随时都能把提交的代码构建出来,提供一个可以测试使用的版本 ,让用户和开发人员同时看到相同的功能,尽早的发现问题和错误,也可以尽快 的得到测试人员和用户的反馈。 要做到持续集成,就要利用一系列工具,把开发过程中的重复工作自动化。 搭建自动的构建服务器,自动的进行单元测试和发布新版本,一个集成的服务器 可以提供构建过程的结果报告,自动通知开发人员构建结果,并且保存历史数据 。IBM Rational Team Concert (RTC) 可以提供工作任务的管理,项目计划的安 排,代码版本管理控制,自动构建可用版本,生成构建结果报告。这些过程构成 了项目的持续集成过程,其中,版本的自动构建和代码的自动单元测试是持续集 成的关键过程,RTC 在这些过程上提供了有力的支持。 自动构建 RTC 提供了 build engine 来负责构建 build,首选,启动 build engine, 并和 RTC 服务器建立了连接。再创建项目的 build 定义。在这个定义中,需要 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |