Java单元测试Mockito的使用详解

 更新时间:2021年07月07日 15:09:13   作者:一簑煙雨  
Mockito是一个强大的mock工具,本文将重点讲述Mockito的基本使用及注意事项,以及Controller测试用例,本文通过示例代码给大家介绍的非常详细,需要的朋友参考下吧

Mockito简介

    调用mock对象的方法时,不会执行真实的方法,而是返回类型的默认值,如object返回null, int返回0等,否则通过指定when(方法).thenReturn(value)来指定方法的返回值。同时mock对象可以进行跟踪,使用verify方法看是否已经被调用过。而spy对象,默认会执行真实方法,返回值可以通过when.thenReturn进行覆盖。可见mock只要避开了执行一些方法,直接返回指定的值,方便做其他测试。

Service测试用例

需要的依赖

  <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>2.23.4</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
            <version>2.1.13.RELEASE</version>
        </dependency>

代码示例

@RunWith(MockitoJUnitRunner.class)
@SpringBootTest()
public class StudentServiceTest {
    @InjectMocks
    StudentService studentService = new StudentServiceImpl();
    @Mock
    StudentDAO     studentDAO;


    @Before
    public void before(){
        Mockito.doReturn(new StudentDO("张三", 18)).when(studentDAO).read(Mockito.anyString());
    }

    @Test
    public void testRead(){
        StudentDO read = studentService.read("");
        Assert.assertNotNull(read);
    }
}

Controller测试用例

需要的依赖

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.1.14.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.jayway.jsonpath</groupId>
            <artifactId>json-path</artifactId>
            <version>2.4.0</version>
        </dependency>

代码示例

@RunWith(MockitoJUnitRunner.class)
@SpringBootTest()
public class StudentControllerTest {
    @Resource
    MockMvc mockMvc;

    @InjectMocks
    StudentController studentController;
    @Mock
    StudentService    studentService;

    @Before
    public void before() {
        mockMvc = MockMvcBuilders.standaloneSetup(studentController).build();
        Mockito.doReturn(new StudentDO("张三", 18)).when(studentService).read(Mockito.anyString());
    }

    @Test
    public void testRead() throws Exception {
        MockHttpServletRequestBuilder request = MockMvcRequestBuilders.get("/student/read/1");
        mockMvc.perform(request)
                .andDo(print())
                .andExpect(status().isOk())
                .andExpect(jsonPath("$.name").value("张三"));
    }

}

到此这篇关于单元测试-Mockito的使用的文章就介绍到这了,更多相关单元测试 Mockito使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springmvc 防止表单重复提交的两种方法

    springmvc 防止表单重复提交的两种方法

    最近在本地开发测试的时候,遇到一个表单重复提交的现象。本文主要介绍了springmvc 防止表单重复提交的两种方法,感兴趣的可以了解一下
    2021-08-08
  • Java面试重点中的重点之Elasticsearch核心原理

    Java面试重点中的重点之Elasticsearch核心原理

    ElasticSearch是一个基于Lucene的搜索引擎,是用Java语言开发的,能够达到实时搜索,稳定,可靠,快速,安装使用方便,作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎,是最受欢迎的企业搜索引擎
    2022-01-01
  • Java手机号码工具类示例详解(判断运营商、获取归属地)

    Java手机号码工具类示例详解(判断运营商、获取归属地)

    这篇文章主要介绍了Java手机号码工具类示例详解,通过手机号码来判断运营商获取归属地,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • 在Java中实现线程安全的单例模式的常见方式

    在Java中实现线程安全的单例模式的常见方式

    单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点,在多线程环境下,确保单例模式的线程安全性是非常重要的,因为多个线程可能会同时尝试创建实例,导致实例不唯一的问题,本文介绍了在Java中实现线程安全的单例模式有几种常见的方式
    2024-09-09
  • Java 8 引入lambda表达式的原因解析

    Java 8 引入lambda表达式的原因解析

    这篇文章主要介绍了Java 8 引入lambda表达式的原因解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 一篇文章彻底弄懂SpringBoot项目jdk版本及依赖不兼容问题

    一篇文章彻底弄懂SpringBoot项目jdk版本及依赖不兼容问题

    这篇文章主要给大家介绍了关于彻底弄懂SpringBoot项目jdk版本及依赖不兼容问题的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-01-01
  • 自己动手实现mybatis动态sql的方法

    自己动手实现mybatis动态sql的方法

    下面小编就为大家分享一篇自己动手实现mybatis动态sql的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • 浅析JavaMail发送邮件后再通过JavaMail接收格式问题

    浅析JavaMail发送邮件后再通过JavaMail接收格式问题

    这篇文章主要介绍了JavaMail发送邮件后再通过JavaMail接收格式问题 ,本文通过代码实例给大家详细解说,需要的朋友可以参考下
    2019-06-06
  • 详解java实践SPI机制及浅析源码

    详解java实践SPI机制及浅析源码

    这篇文章主要介绍了详解java实践SPI机制及浅析源码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • SpringBoot如何处理@KafkaListener消息

    SpringBoot如何处理@KafkaListener消息

    Spring通过KafkaMessageListenerContainer、ConcurrentMessageListenerContainer等组件实现Kafka消息的监听和处理,并通过@KafkaListener注解将业务逻辑与Kafka消费者连接起来,Spring Boot自动配置Kafka相关组件,简化了Kafka的使用
    2024-12-12

最新评论