一、单元测试准备
引入junit和mockito包
单元测试主要注解:
@SpringBoot
@RunWith 测试运行器
@Before 在测试方法之前运行
@Test 测试方法
@After 测试方法之后运行
@InjectMocks 待测试类
@Mock 测试中需要使用到的类(模拟类)
@Spy 测试中需要使用到的类(真实类)
单元测试中其实最头疼的是构建参数,在我们项目中用到的方法是将数据放在excel表中循环拿数据调用
在测试过程中我们将测试分为两部分,一部分为controller层测试,一部分为service层测试
二、controller层单元测试
使用工具:Junit4+MockMvc+Mockito
Mockito使用mock来模拟外部依赖对象,创建一个轻量级的、可控制的对象来代替测试中需要的真实对象,模拟真实对象的行为和功能。
测试controller需要在web环境中发起请求,可选用mockMvc模拟web环境进行controller层测试。mockMvc资料可自行百度
大家可以根据自己的业务将请求封装
开始测试步骤
2.1为需要测试的类和方法创建test方法
2.2初始化mockMvc
2.3构建请求
2.4执行测试
可根据业务决定是否mock数据,根据不同场景选择注入注解
2.5对结果进行断言
controller层只用对参数进行校验,如果只需要测试接口是否能跑通,可用mock数据测试,mock service层返回数据
三、service层单元测试
service层单元测试和controller层思路一致
根据不同场景选择不同注解,因为service层测试往往会涉及到数据库操作,所以建议service层测试使用mock注解,需要访问service调用其他类的真实方法是可使用@Spy注解,注意:mock注解用在没有实现的接口上没有效果,mock只能mock实现类。
service层测试时所有使用到的类都需要注入。