单元测试框架 mockito
单元测试框架 mockito
1、在项目的 pom.xml 引入 mockito 的依赖:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>5.12.0</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mockito/mockito-core -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>5.12.0</version>
<scope>test</scope>
</dependency>
2、导入类:
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mockStatic;
import static org.mockito.Mockito.when;
或
import static org.mockito.Mockito.*; // 仅限 org.mockito 包
2、模拟 Spring 的消息源对象:
@Mock
MessageSource messageSource;
3、模拟静态的 Spring 上下文感知对象:
static MockedStatic<SpringContextAware> springContextAwareMockedStatic = mockStatic(SpringContextAware.class);
4、在前置条件方法中模拟获取 Spring 的消息源对象:
@Before
public void setUp() {
MockitoAnnotations.openMocks(this);
// MockitoAnnotations.initMocks(this); // mockito-core 3.3.3 版本是这种方式
springContextAwareMockedStatic.when(() -> SpringContextAware.getBean(MessageSource.class)).thenReturn(messageSource);
}
5、模拟匹配任意的方法的方法:
any()
6、模拟静态类:
mockStatic(静态类.class);
或者
Mockito.mockStatic(BeanUtil.class);
比如:Mockito.mockStatic(BeanUtil.class);
7、模拟文件:
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.multipart.MultipartFile;
MultipartFile multipartFile = new MockMultipartFile("sqlFile", "1\n2".getBytes()); // 文件的内容建议至少有两行,因为 Spring 读取时将第一行作为头信息,读不到第二行认为是空文件。
或
MultipartFile multipartFile = Mockito.mock(MultipartFile.class);
when(multipartFile.getOriginalFilename()).thenReturn("name.xls");
8、模拟返回指定的值:
when(healthMapper.check(any())).thenReturn(1);
9、模拟抛出异常:
when(healthMapper.insert(any())).thenThrow(new RuntimeException("添加失败!"));