精品文档---下载后可任意编辑JAVA 单元测试指引精品文档---下载后可任意编辑1.背景系统的规模及复杂度与时间及业务的拓展成正比。随着系统的规模不断变大,各子系统内的业务逻辑的新增,系统的代码总数也在不断的增加。部分业务在时间的推移上会发生变化引起系统在代码层面上的重构,系统代码在软件工程的生命周期中不断的迭代和变化。代码的新增以及重构都需要通过严格测试才能部署上线,公司目前对于上线功能实行的多数是黑盒测试,并未使用白盒测试对研发人员编写的代码进行更高的覆盖测试。而研发人员平常在功能开发完成后进行自测的时候使用的方式也因为个人喜好或各种原因没有形成统一。因此,系统若能在编译、部署、上线的时候能够对所有功能都进行尽可能全面的白盒测试将会有助于降低系统在升级过程中的故障率,提高系统升级的速度。若能够通过更全面的测试发现代码中的隐藏缺陷,便能提升代码的健壮性,使系统在长期运行中发生更少的问题。2.需求研发人员在功能开发结束之后应当同时提交该功能的单元测试用例代码,并且该单元测试用例代码需要满足以下几点需求:精品文档---下载后可任意编辑2.1. 功能覆盖1)每个单元测试代码中需要覆盖该功能的所有输入和输出,并对输出进行校验。2)最终目标每个系统的所有测试用例代码需要覆盖系统的所有功能。(存量系统在后续分阶段补充)2.2. 测试颗粒化1)单元测试用例只测试小颗粒的功能。2)一个单元测试用例只涉及到一个被测模块,避开牵扯到太多的模块。2.3. 测试自动化1)单元测试的输入,输出以及校验全部自动化,不需要人工干预。2)系统编译的时候需要自动将所有单元测试执行一次,任意单元测试不通过不允予通过发布。2.4. 持续维护1)新添加的功能和模块需要添加相对应的单元测试用例。2)重构或业务逻辑变更涉及到的功能和模块代码变化需要更新相对应的单元测试用例。3.方案基于公司在 JAVA 语言方面多数系统是采纳 Maven 进行构建的现状以及 Maven 在系统构建的优势,故采纳 Maven 进行系统构建+Junit 进行用例测试的方案实现。精品文档---下载后可任意编辑研发人员可以借助 Cobertura 对自己编写的测试用例进行代码覆盖分析,以便对测试代码进行调整和优化。3.1. Maven1)Maven 不仅仅能构建项目,同时还是一个依赖管理工具,一个项目管理工具,提供中央仓库帮助我们自动下载构件,也允许我们上传自己开发的 jar 包供各系统使用,这些都是自动化的非常方便。2)Maven 提供...