一、单元测试是什么
单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确,通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为1。
二、单元测试的好处
- 消灭低级错误
基本的单元测试,可以在系统测试之前,把大部分比较低级的错误都消灭掉,减少系统测试过程中的问题,这样也就减少了系统测试中定位和解决问题的时间成本了。 - 找出潜在的bug
某些类型的bug,靠系统测试是很难找到的。例如一些代码分支,平时99%的场景基本上都走不到,但一旦走到了,如果没有提前测试好,那么可能就是一个灾难。 - 上库前的保证
加了新代码,上库前跑一把单元测试,都通过,说明代码可能没有影响到之前的逻辑,这样上库也比较放心。如果之前的单元测试跑不过,那么很有可能新的代码有潜在的问题,赶紧修复去吧。 - 重构代码后的回归
当我们重构代码之后,需要保证不改变之前的逻辑,如果全量测试的话,工作量又太大,这个时候,我们可以通过测试用例来验证自己的重构后的逻辑是否变化。 - 方便逻辑理解
当我们看别人的代码的时候,可能会不知道从哪里看起,看主流程的话,步骤太长,这个时候,我们可以从某些单元测试入手,从而来了解整个流程。
三、相关技术
测试用例编写:
- junit5:【Juint5详解】
- mockito:【Mockito详解】
- spring-boot-starter-test:【spring-boot-test详解】
- mybatis-spring-boot-starter-test:【mybatis-spring-boot-starter-test详解】
- testcontainer:【testcontainer详解】
测试质量保证
- sonar
- jenkins
延伸技术:
- Cucumber
- Karate
- EasyMock
- PowerMock
- TestNG
- …
四、编码规范及技巧
一般而
言,我们都会使用maven来管理我们的项目,至于gradle。这里不做过多的讲解。
1. 写多少测试类,测试方法
一般建议,对每一个要被测试的类,单独的创建一个测试类文件,文件名以被测试类+Test后缀命名,如:BeanUtil的测试类名为BeanUtilTest
测试方法一般也会是和被测试的方法名一致。
2. 测试用例所在目录
在maven项目中,我们把测试用例编写在test下的java目录下即可,如下所述:
建议和被测试的类的包路径一致。
3. 测试数据的选取
在选取测试数据的时候,我们不要只仅仅是选取了常规数据,要多考虑边界场景,比如字符串是否为null,集合是否有数据,等等,这样才能最大程度的找出代码中的潜在错误,让我们的代码无懈可击;
版权声明:本文为mail_liuxing原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。