欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

基于SpringBoot Mock单元测试详解

程序员文章站 2022-03-18 23:25:23
目录1.mock的概念:3. 常用的 mockito 方法junit中的基本注解: @test:使用该注解标注的public void方法会表示为一个测试方法; @beforeclass:...

junit中的基本注解:

  • @test:使用该注解标注的public void方法会表示为一个测试方法;
  • @beforeclass:表示在类中的任意public static void方法执行之前执行;
  • @afterclass:表示在类中的任意public static void方法之后执行;
  • @before:表示在任意使用@test注解标注的public void方法执行之前执行;
  • @after:表示在任意使用@test注解标注的public void方法执行之后执行;

springboot 单元测试详解(mockito、mockbean)

springboot 单元测试(cobertura 生成覆盖率报告)

1.mock的概念:

所谓的mock就是创建一个类的虚假的对象,在测试环境中,用来替换掉真实的对象,以达到两大目的:

验证这个对象的某些方法的调用情况,调用了多少次,参数是什么等等指定这个对象的某些方法的行为,返回特定的值,或者是执行特定的动作 2. 添加依赖

新建的springboot项目中默认包含了spring-boot-starter-test的依赖,如果没有包含可自行在pom.xml中添加依赖

 <dependency>
        <groupid>org.springframework.boot</groupid>
        <artifactid>spring-boot-starter-test</artifactid>
        <scope>test</scope>
    </dependency>

基于SpringBoot Mock单元测试详解

进入 spring-boot-starter-test-2.2.2.release.pom 可以看到该依赖中已经有单元测试所需的大部分依赖,如:

  • junit
  • mockito
  • hamcrest

基于SpringBoot Mock单元测试详解

注意包含的junit为junit5 ,在主要还是使用junit4所以在pom.xml中添加依赖

        <dependency>
            <groupid>junit</groupid>
            <artifactid>junit</artifactid>
            <scope>test</scope>
        </dependency>

这里如果不添加的话,在使用@runwith注解的时候也会提示你添加,点击add ‘junit4' to classpath也会自动在pom.xml帮你添加

基于SpringBoot Mock单元测试详解

若为非springboot项目,其他 spring 项目,需要自己添加 junit 和 mockito 的依赖。springboot不要添加,添加后test的时候会出错

      <dependency>
            <groupid>junit</groupid>
            <artifactid>junit</artifactid>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!-- 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. 常用的 mockito 方法

mockito的使用,一般有以下几种组合:

  • do/when:包括dothrow(…).when(…)/doreturn(…).when(…)/doanswer(…).when(…)
  • given/will:包括given(…).willreturn(…)/given(…).willanswer(…)
  • when/then: 包括when(…).thenreturn(…)/when(…).thenanswer(…)

例如:

given(userrepository.findbyusername(mockito.anystring())).willreturn(user);
  • given + willreturn

given用于对指定方法进行返回值的定制,它需要与will开头的方法一起使用

通过willreturn可以直接指定打桩的方法的返回值

when(userrepository.findbyusername(mockito.anystring())).thenreturn(user);
  • when + thenreturn

when的作用与given有点类似,但它一般与then开头的方法一起使用。

thenreturn与willreturn类似,不过它一般与when一起使用。

基于SpringBoot Mock单元测试详解

基于SpringBoot Mock单元测试详解

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。