单元测试是一个很是好用的工具,是一个Java程序员修养的一部分。从04年开始,我就开始在项目实践中使用单元测试。十几年来,参与的项目基本上都或多或少的使用了单元测试,多的能有100%覆盖率的要求,少的也要覆盖主要代码,发现这个实践在提升软件质量和开发速度上仍是颇有好处的。在和朋友同事的交流中,发现有不少项目没有使用单元测试,也有不少程序员不会写单元测试,可是你们对这个都颇有兴趣。因此我想把本身掌握的关于单元测试的技能(架构、设计和技术)和实施策略分享一下。固然,要是有那个企业愿意要求我去作相关的内训和咨询,我会很高兴的。程序员 单元测试这系列想讲讲两方面内容: 本文包括下面几部分的内容 单元测试的定义指程序员编写的用于测试逻辑代码的代码。个人理解中单元测试分红如下两类:框架 代码测试代码测试是指对代码的实现进行测试,不依赖于第三方环境,运行速度很快。举几个例子:ide
集成测试是指集成了第三方依赖以后的测试。它会依赖于第三方环境,运行速度相对代码测试慢。举几个例子:单元测试
在软件工程中,你们都知道越早开始测试越好,越早开始测试就能越早发现缺陷,修改代价就越小。 单元测试是能够自动化运行的,若是代码有良好的单元测试覆盖,在对代码进行重构和修改以后,咱们能够用极短的时间(几分钟)对整个系统进行一下测试,测试所有经过,这个说明的修改对系统没有形成严重影响(这不能说明单元测试覆盖不到的地方也没有问题),因而你就能够安心的继续修改代码和重构代码。 有助于提升代码质量和架构设计为了便于单元测试和代码覆盖,架构必然会在逻辑封装,解耦合,依赖注入,控制反转,对外接口封装等方面进行优化。
编写良好的单元测试代码能够自动化运行,能够在全部的开发人员的环境里运行,能够在持续集成环境里运行,能够在每次代码修改提交后运行,项目的代码和功能在反复的收到测试。 加快开发速度前期的小小投入,可以在整个项目周期中发挥做用,可以提升代码的质量,可以对代码进行早期测试,可以减小代码Bug,可以保证代码不会被其余代码破坏。修改Bug和调试的时间、相关的沟通时间被大幅度的减小。项目时间能更有保证。 起到代码文档的做用对于一个方法或者一个对象的使用,有的时候光用注释很难说清楚。单元测试中对该方法/对象的使用提供了实例说明的做用,使咱们更容易理解对其的使用。 Java程序员单元测试工具库写单元测试也是须要掌握一些工具的,不过这些工具使用起来都比较简单,也和容易学习。在后面的文章中,我将会介绍其中的一部分我常常用到的。 单元测试框架在Java世界中,有两个使用最多的单元测试框架,JUnit和TestNG。使用最多和支持最普遍的是JUnit。后面的文章中我将会给你们介绍一下它的使用。 Mock工具Mock工具是进行代码测试所必须掌握的一个工具。目前流行的有Mockito, EasyMock和JMock这三种。我之前用过EasyMock和JMock,后来开始使用Mockito以后就停不下来了。后面的文章中会给你们介绍一下它的用法。 其余工具通用型的我将会介绍Hamcrest,一个用于验证测试结果工具库。其余的有一些用于各类专门目的而使用的工具,这类工具备不少,好比
|