乐趣区

关于code:代码单元测试总体介绍

劳动了一天之后,学习劲头养好了吗?明天的课程为《代码单元测试总体介绍》,内容分为两个局部:单元测试根底和单元测试的意义与倡议。

一、单元测试根底

单元测试根底包含以下四个方面:

1、单元测试的误区

2、单元测试的概念

3、常见的单元测试问题

4、优良的单元测试

01 单元测试误区

单元测试存在一些意识上的误区,包含:

(1)开发单元测试代码的工作量大。

(2)做单元测试不属于开发人员的职责。

(3)代码正确率高,进行单元测试必要性不大。

(4)前期有集成测试,后期进行单元测试必要性不大。

(5)单元测试无奈带来显著收益,效率不高。

02 单元测试的概念

在维基百科中,单元测试的定义为:一段代码调用另一段代码,随后测验一些假如的正确性。

在百度百科中,单元测试是指对软件中的最小可测试单元进行检查和验证。

那么咱们不禁要问:一次编写的单元测试是否只是为了验证该次开发过程中对应的代码逻辑的正确性?

其实不然,单元测试不仅在于实现问题中的性能,优良的单元测试作用短暂,能够缩小后续工作的累赘,从而晋升整体生产力。

03 常见的单元测试问题

目前单元测试中存在一些常见的问题:

(1)应用 System.out 输入测试后果,依赖人去判断测试是否正确。

(2)不应用 Assert(断言)对测试后果进行判断。

在以上两种情景都须要依赖人与电脑的交互来判断此 case 是否胜利,人的工作量较大;在理论的单元测试中,该当应用断言进行判断,使 case 运行时主动输入后果。

(3)没有边界查看。

(4)多个测试分支放入一个单元测试办法中。

这种状况会导致一旦呈现运行失败时,难以判断呈现谬误的分支所在。

(5)测试 case 环境相干(依赖已知库表、工夫)。

对于这种状况,该当做出批改,使输出参数为确定的值。

(6)测试方法执行有先后顺序。在理论测试过程中,因为不同的用于运行单元测试的测试框架对于 case 执行程序有本人的行为,故单元测试理论执行程序存在不确定性。

04 优良的单元测试

优良的单元测试须要以下准则:

(1)单元测试彼此之间应具备独立性。一个单元测试应独立于其它测试及运行它的环境。

(2)一个优良的单元测试是可反复的。它须要具备屡次运行的能力,若不可反复,则不能算作优良的单元测试。

(3)优良的单元测试可自动化。自动化具备双重含意:第一,单元测试可依赖于现有工具自动化运行;第二,单元测试执行胜利与否可主动进行判断,而不依赖于人为判断。

(4)优良的单元测试是彻底的。单元测试对于被测试对象而言须要笼罩全副的分支。

二、单元测试的意义与倡议

01 什么状况下做单元测试

(1)单元测试的益处

①带来更高的测试覆盖率:有些分支问题在集成测试过程中很难发现,但在单元测试中极易发现。

②进步团队效率:单元测试在开发完后立刻执行,将测试提前一步,不用等集成测试时才发现问题。

③自信的重构和改良实现。

④将预期的行为文档化:残缺的单元测试是产品代码的最好文档。

(2)不当的单元测试会升高生产力

单元测试并不是越多越好,不当的单元测试会升高生产力。

①单元测试的工作量与一般代码的工作量的比例介于 1:1~1.5:1。

②整体我的项目的单元测试运行工夫随着单元测试 case 增多线性增长,测试的执行速度影响每次变更期待的工夫。

③单元测试的代码,也须要长期保护。

(3)如何抉择单元测试的对象

不写单元测试不好,单元测试写多了也不好,这就要求咱们要仔细抉择单元测试的对象。

在进行单元测试的时候,应重点关注外围业务逻辑代码、重用性高的代码与调用频繁的代码,后两者较为相近。

02 单元测试误区

(1)Java Web 我的项目底层的 BO\DAO 大体都是工具主动生成,无需额定单测,然而 Action(Controller)层不含有较多的业务逻辑,须要通过集成测试发现问题。要留神的是 java web 我的项目的外围业务逻辑次要存在于 Service 层代码中,须要着重进行单元测试。

(2)平台类 Java 我的项目尽管在独自的场景下简直不会呈现问题,然而穿插混合时可能存在问题。而且因为平台类我的项目更多的兼顾不同的简单的利用场景,所以在测试时要尽量做到全面。值得注意的是平台类 Java 我的项目的分支较多,所以要求在单元测试时要做到笼罩分支全面。

(3)组件类 Java 我的项目和平台类我的项目相似,也须要偏重分支笼罩全面,包含异样调用状况的笼罩。

(4)Hadoop 的 MR 工作属于非凡的 JAVA 程序,集成测试老本高,次要体现在工夫老本上。在进行单测时,能够将外围逻辑代码抽取进去,独自测试。

对于代码单元测试咱们明天就介绍到这里
点击进入理解更多技术信息~~

退出移动版