写点什么

Mockito 助你实现真正的单元测试

作者:lambochen
  • 2023-01-28
    浙江
  • 本文字数:1286 字

    阅读完需:约 4 分钟

博客搬家,原 blog:https://blog.csdn.net/chensanwa/article/details/105881067


1. 扯犊子


话不多说,单元测试,知道的卅?


mock 数据? 也懂的卅?


好,上菜!!!

2. 一个字,干


业务逻辑说明: MockitoService 调用 MockitoDao, 需要对 service 进行测试


待测试代码:


MockitoService.java


@Servicepublic class MockitoService {        @Autowired    private MockitoDao mockitoDao;        public String getData() {        String data = mockitoDao.getData();        return "service:" + data;    }}
复制代码


MockitoDao.java


@Componentpublic class MockitoDao {
/** * 获取数据 * @return */ public String getData() { // 具体实现不重要,反正都会 mock return "data"; }
}
复制代码

3. Mockito 闪亮登场

3.1. 引入依赖

<!-- https://mvnrepository.com/artifact/org.mockito/mockito-all --><dependency>    <groupId>org.mockito</groupId>    <artifactId>mockito-all</artifactId>    <version>1.10.19</version>    <scope>test</scope></dependency>
复制代码

3.2. 测试代码

import org.junit.Assert;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.mockito.InjectMocks;import org.mockito.Mock;import org.mockito.Mockito;import org.mockito.junit.MockitoJUnitRunner;
/** * Mockito 提供的 Runner * * 如果不使用 MockitoJUnitRunner 而采用 Spring Runner, * 则需要添加 MockitoAnnotations.initMocks(this) 启用 Mockito 注解 */// Mockito 提供的 Runner@RunWith(MockitoJUnitRunner.class)public class MockitoServiceTest {
// 注入 mock 对象,允许内部依赖 mock @InjectMocks MockitoService mockitoService;
// mock 对象 @Mock MockitoDao mockitoDao;
@Before public void mockData() { // MockitoAnnotations.initMocks(this); // mock 行为 Mockito.when(mockitoDao.getData()).thenReturn("mockito"); }
@Test public void getData() { String data = mockitoService.getData(); Assert.assertEquals("service:mockito", data); }}
复制代码

3.4. 为啥是真正的单元测试


单元测试,顾名思义,咱们应该仅仅、只对某一块单元进行测试,最好是方法级别,顶多是类级别的测试。


如果超过了此规模,就不应该是单元测试的活了。 比如多个类之间的测试,应该交给 集成测试 来干。而不是,单元测试。


Mockito 通过提供 Runner 测试环境,通过 mock 掉类中依赖的其他资源(其他类、数据、第三方资源等),实现真正的单元测试。


并且,有着 Junit 4 的背书,perfect !!!


更多 Mockito 文档请骑上你可爱的小摩托,https://github.com/xhiteam/mockito-doc-zh


4. 参考


完整代码: https://github.com/LamboChen/demo/tree/master/mock


发布于: 刚刚阅读数: 4
用户头像

lambochen

关注

Stay hungry, stay foolish. 2019-02-28 加入

还未添加个人简介

评论

发布
暂无评论
Mockito 助你实现真正的单元测试_lambochen_InfoQ写作社区