IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> SpingBoot2.x+Mockito+Junit5单元测试 -> 正文阅读

[开发测试]SpingBoot2.x+Mockito+Junit5单元测试

SpingBoot2.x+Mockito+Junit5单元测试

1.引入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
		</exclusion>
	</exclusions>
</dependency>

2.初始化

  • idea中光标放在service类上,按下alt+insert,弹出Test,点击它,自动生成单元测试类

    如图:

  • 单元测试类中初始化mock注解对象(两种方式):

    • 类上添加@ExtendWith(MockitoExtension.class)

    • 在类中标注了@BeforeEach的方法中添加一段代码,如下:

      MockitoAnnotations.initMocks(this);
      

3.编写单元测试类

  • 前提准备

准备两个类,HelloService、HelloMapper

@Service
public class HelloService {

    @Autowired
    private HelloMapper helloMapper;

    public String hello() {
        if (helloMapper != null) {
            return helloMapper.sout();
        }
        return "";
    }
}
@Repository
public interface HelloMapper {
    
    default String sout() {
        return "666";
    }
}
  • 单元测试类编写代码(有两种方式)

    • 方式一:

      @ExtendWith(MockitoExtension.class)
      public class Junit5Mockito {
      
          @InjectMocks
          private HelloService helloService;
      	
          // 被mock的对象一定要使用public修改,不能使用private
          @Mock
          public HelloMapper helloMapper;
      
          @Test
          void testHelloService() {
              when(helloMapper.sout()).thenReturn("777");
              String hello = helloService.hello();
              // 期望值:777,该断言会success
              Assertions.assertEquals(hello, "777");
      
              // 期望值:777,该断言会error
      //        Assertions.assertEquals(hello, "666");
          }
      }
      
    • 方式二:

      class HelloServiceTest {
      
          @InjectMocks
          private HelloService helloService;
      
          @Mock
          public HelloMapper helloMapper;
          
          @BeforeEach
          void setUp() {
              MockitoAnnotations.initMocks(this);
          }
          
          /**
           * 可整合Assertions类来进行断言
           */
          @Test
          void testHelloService() {
              when(helloMapper.sout()).thenReturn("777");
              String hello = helloService.hello();
              // 期望值:777,该断言会success
              Assertions.assertEquals(hello, "777");
      
              // 期望值:777,该断言会error
      //        Assertions.assertEquals(hello, "666");
          }
      

    4.其他

    单元测试JUnit5使用:https://www.yuque.com/atguigu/springboot/ksndgx

    Junit5整合MockitoExtension扩展:https://javadoc.io/static/org.mockito/mockito-junit-jupiter/3.11.2/org/mockito/junit/jupiter/MockitoExtension.html

    Mockito官方文档:https://javadoc.io/static/org.mockito/mockito-core/3.1.0/org/mockito/Mockito.html#45

    JUnit5官方文档:https://junit.org/junit5/docs/current/user-guide/

    Springboot-testing官方文档:https://docs.spring.io/spring-boot/docs/2.2.6.RELEASE/reference/html/spring-boot-features.html#boot-features-testing
    MockitoAnnotations-api:https://javadoc.io/static/org.mockitomockito-core/3.1.0/org/mockito/MockitoAnnotations.html
    Mockito官方文档中文翻译:https://blog.csdn.net/bboyfeiyu/article/details/52127551?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.control
    @Mock 和 @InjectMocks组合使用:https://www.jianshu.com/p/bb705a56f620

    ?

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-07-09 17:40:17  更:2021-07-09 17:40:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 13:32:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码