返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot @SpringBootTest加速单元测试的小诀窍
  • 531
分享到

SpringBoot @SpringBootTest加速单元测试的小诀窍

2024-04-02 19:04:59 531人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录@SpringBootTest加速单元测试小诀窍PreclassesWEBEnvironment@记录使用springBootTest遇到的坑@SpringBootTest加速单

@SpringBootTest加速单元测试小诀窍

Pre

SpringBoot - 应用程序测试方案

随着代码量的争夺,测试类的启动速度变得越来越慢,而大多数情况下只是为了测试一下某个实现类的某个方法而已,比如测试一个DAO层的方法,却要启动这个应用。

在这里插入图片描述

今天我们继续深入了解一下 稍微高级一点的用法

classes

在这里插入图片描述

classes 属性用来指定运行测试类需要装载的 class 集合,如果不指定,那么会默认装载 @SpringBootConfiguration 注解标注的类

如果不指定classes属性,那么启动测试类时需要加载的Bean的数量和正常启动一次入口类加载的 Bean 数量是一样的。

如果你的项目中有很多个 Bean, 特别是有以下几种时:

  • 有 CommandLineRunner 的实现类
  • 用 @PostConstruct 注解指定了初始化方法的类

这几种类在程序初始化的过程中都会运行自身的业务代码或者初始化代码,从而延后了测试方法的运行。

在这种情况下,我们在编写测试类的时候,如果明确这个测试类会用到哪几个 Bean,则可以在 classes 属性处指定,之后启动测试类的时候,就只会加载需要的 Bean 到上下文中,从而加快启动速度。比如:

用法


@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes={ArtisanServiceImpl.class})

webEnvironment

在这里插入图片描述

这个属性的含义是说测试类要不要启动一个 web 环境, 要不要启动一个 Tomcat 容器,可选的值为:

  • MOCK:启动一个模拟的 Servlet 环境, 默认值。
  • RANDOM_PORT:启动一个 Tomcat 容器,并监听一个随机的端口号
  • DEFINED_PORT:启动一个 Tomcat 容器,并监听配置文件中定义的端口(未定义则默认监听8080)
  • NONE:不启动 Tomcat 容器

怎么使用呢? 举个例子 如果你要测试的方法不需要用到 Tomcat 容器,比如:

  • 测试 DAO 类的CRUD
  • 测试Service 类的业务方法
  • 测试工具类的公用方法
  • 测试配置文件类是否读取到了正确的值

用法

只需要通过指定


@SpringBootTest(webEnvironment =
SpringBootTest.WebEnvironment.NONE) 

即可达到加速的效果。这时测试类启动时就只会初始化 Spring 上下文,不再启动 Tomcat 容器了:


@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
public class ArtisanServiceTests {
    @Autowired
    private IArtisanSerive artisanService;
    @Test
    public void test() {
        // ...
    }
}

@记录使用SpringBootTest遇到的坑

不要导入junit这个依赖,只要上面那个test就行了

导入junit依赖,运行会报错

导入junit,这里会红。运行测试方法会报错

这里变红了,只需要spring-boot-starter-test依赖就好

只留下这个依赖就行了

删掉junit依赖

运行成功!

运行成功!

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

--结束END--

本文标题: SpringBoot @SpringBootTest加速单元测试的小诀窍

本文链接: https://lsjlt.com/news/156370.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SpringBoot @SpringBootTest加速单元测试的小诀窍
    目录@SpringBootTest加速单元测试小诀窍PreclasseswebEnvironment@记录使用SpringBootTest遇到的坑@SpringBootTest加速单...
    99+
    2024-04-02
  • @SpringBootTest单元测试测试类的使用
    前言 使用SpringBoot 测试类可在不需要启动程序时,即可使用。当你运行你的测试方法时他会自己启动程序调用所需使用到的mapper,service接口,实现方法。故而可在测试类中像编写正常service方法一样编写代码 一.依赖录入 ...
    99+
    2023-08-21
    单元测试 junit java
  • 单元测试 @mock与@SpringBootTest的使用
    目录一.单元测试工具mock使用1.引入依赖包2.mock测试类二.springboot使用@SpringBootTest单元测试1.引入依赖包2.测试类三.mock和@spring...
    99+
    2024-04-02
  • SpringBoot使用@SpringBootTest注解开发单元测试教程
    目录概述1.添加依赖:2. 编写启动入口类3. 编写Controller类4. 编写service类5. 编写mapper类6. 编写测试类7.测试结果:概述 @SpringBoot...
    99+
    2024-04-02
  • 解决@SpringBootTest 单元测试遇到的坑
    目录@SpringBootTest单元测试的坑1、环境2、遇到的问题3、解决方式Test类运行单元测试失效Test测试类无法执行完全问题@SpringBootTest单元测试的坑 1...
    99+
    2024-04-02
  • SpringBootTest单元测试报错的解决方案
    目录SpringBootTest单元测试报错单元测试 @mock和@SpringBootTest使用一.单元测试工具mock使用二.springboot使用@SpringBootTe...
    99+
    2024-04-02
  • 使用springboot单元测试对weblistener的加载测试
    目录springboot单元测试对weblistener的加载测试原监听器代码测试类springboot web做单元测试springboot单元测试对weblistener的加载测...
    99+
    2024-04-02
  • SpringBoot+TestNG单元测试的实现
    目录背景接口测试用例,针对入参进行设计:言归正传!背景 由于开发任务进度紧张,接口及基础数据提供不全,即使设计全面的接口测试用例也无法全面有效的进行覆盖测试;且又因为单接口测试用例...
    99+
    2024-04-02
  • 如何中SpringBoot中添加一个单元测试
    这篇文章将为大家详细讲解有关如何中SpringBoot中添加一个单元测试,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。首先我们来添加单元测试所需要的jar<dependency>...
    99+
    2023-05-31
    springboot bo
  • SpringBoot环境下junit单元测试速度优化方式
    目录1、提高单元测试效率背景2、单元测试如何执行补充说明3、项目中使用4、优化单测思路思路5、实现方式6、编码实现6.1Jetty作为服务启动6.2Tomcat作为容器启动1、提高单...
    99+
    2024-04-02
  • SpringBoot+JUnit5+MockMvc+Mockito单元测试的实现
    目录版本 项目结构 EchoServiceImpl EchoControllerNoMockitoTest EchoControllerMockTest 今天聊聊如何在 Spring...
    99+
    2024-04-02
  • SpringBoot+TestNG单元测试的实现方法
    这篇文章主要讲解了“SpringBoot+TestNG单元测试的实现方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot+TestNG单元测试的实现方法”吧!目录背景接口测...
    99+
    2023-06-20
  • SpringBoot与单元测试JUnit的结合操作
    目录Juint版本说明Junit5常见注解及其用法在普通Maven项目中使用Junit在Spring项目中使用Junit在SpringBoot项目中使用Junit有些人认为,写单元测...
    99+
    2024-04-02
  • 基于SpringBoot Mock单元测试的示例分析
    小编给大家分享一下基于SpringBoot Mock单元测试的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Junit中的基本注解:@Test:使用该注解标注的public void方法会表示为一个测试方...
    99+
    2023-06-25
  • 如何进行ABAP和Java SpringBoot的单元测试
    本篇文章为大家展示了如何进行ABAP和Java SpringBoot的单元测试,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。ABAP在ABAP类里,本地类(Local Class)里用关键字FOR ...
    99+
    2023-06-02
  • 微信小程序单元测试的方法是什么
    这篇文章主要讲解了“微信小程序单元测试的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序单元测试的方法是什么”吧!程序设计,实现之后的下一个环节就是单元测试了。对于位置闹铃...
    99+
    2023-06-19
  • PHP 单元测试:增加代码覆盖率的技巧
    php 单元测试中提高代码覆盖率的方法:使用 phpunit 的 --coverage-html 选项生成覆盖率报告。使用 setaccessible 方法覆盖私有方法和属性。使用断言覆...
    99+
    2024-05-22
    php 单元测试 access
  • SpringBoot单元测试没有执行的按钮问题及解决
    目录单元测试没有执行的按钮问题说明解决方法单元测试没有启动按钮(另辟蹊径)大致如下图(红圈处,没有启动按钮)现状转机结论单元测试没有执行的按钮 问题说明 在搭建SpringBoot项...
    99+
    2024-04-02
  • SpringBoot单元测试使用@Test没有run方法的解决方案
    目录SpringBoot单元测试使用@Test没有run方法原因找到了SpringBoot写单元测试遇到的坑SpringBoot怎么写单元测试SpringBoot使用Mockito进...
    99+
    2024-04-02
  • Springboot单元测试无法读取配置文件的解决方案
    目录单元测试无法读取配置文件深渊巨坑单元测试加载配置文件启动异常最初以为是配置文件路径写错了最后确认是因为xml配置问题单元测试无法读取配置文件 首先,测试类要加注解 表示该类是...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作