Spring Boot进行单元测试,一个思路解决重启低效难题!

这篇具有很好参考价值的文章主要介绍了Spring Boot进行单元测试,一个思路解决重启低效难题!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Spring Boot进行单元测试,一个思路解决重启低效难题!,程序员,软件测试,IT,spring boot,单元测试,后端,自动化测试,测试工具,python,java

所谓单元测试就是对功能最小粒度的测试,落实到JAVA中就是对单个方法的测试。

junit可以完成单个方法的测试,但是对于Spring体系下的web应用的单元测试是无能为力的。因为spring体系下的web应用都采用了MVC三层架构,依托于IOC,层级之间采用了依赖注入的方式来进行调用。如果应用不启动、IOC容器不进行初始化、依赖没有被注入进IOC容器,根本就没办法正常的使用。调controller,会由于service没注入而报空指针异常,调service,会由于dao没注入而报空指针异常。

所以我们发现想要对Spring Boot进行单元测试,前置条件就是需要启动应用,或者说准确点是需要启动IOC。但很明显我们又不可能每次都去直接启动应用来进行测试,一些架构糟糕、很重的老应用启动,动不动就是几分钟甚至十几分钟。我们不可能每次写一点新的代码,想要测试就去重启一下,这样效率太低了。

为此spring boot test为我们提供了@SpringBootTest来对SpringBoot应用进行快捷的单元测试。

基本使用

一般单元测试类我们都放在test路径下,一个@Test就是一个case(用例):

在从 Spring Boot 1.4.0 版本以前@SpringBootTest需要和@RunWith配合来使用

@RunWith(SpringRunner.class)用来指定启动类是哪个?@SpringBootTest用来加载应用上下文

依赖:

import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
 
@RunWith(SpringRunner.class)
@SpringBootTest
public class MyApplicationTests {
 
    // 测试内容
 
}

代码示例:

import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
 
@RunWith(SpringRunner.class)
@SpringBootTest
public class MyApplicationTests {
 
    // 测试内容
 
}

在从 Spring Boot 1.4.0 版本开始就不用加上@RunWith了,直接使用@SpringBootTest就可以了。

代码示例:​​​​​​​

import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import com.example.MyApplication; // 替换成实际的主启动类所在的包
 
@SpringBootTest(classes = MyApplication.class)
public class MyApplicationTests {
 
    // 测试内容
 
}

3.优势

我猜到这儿很多小伙伴有所疑惑:

既然@SpringBootTest也要启动主启动类,那和我们直接启动SpringBoot应用来测试有什么区别喃?@SpringBootTest的优势在哪儿?

答案是——轻量级:

@SpringBootTest 注解提供了轻量级的测试环境,相比直接启动整个应用程序,它可以只加载所需的配置和组件,从而使测试更加迅速。这对于单元测试是非常有利的,因为它们通常关注的是某个组件或模块的功能,而不是整个应用程序。

4.常用属性

@SpringBootTest 注解提供了许多属性,用于配置测试的上下文加载和应用程序启动。以下是一些常用的 @SpringBootTest 属性:

classes:

指定启动测试时加载的配置类或主启动类。可以使用其中一个属性,根据需要选择。

webEnvironment:

指定测试的 Web 环境。可以设置为 WebEnvironment.MOCK(默认值,使用 MockMvc)或 WebEnvironment.RANDOM_PORT(随机端口,真正启动嵌入式容器)等。

@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)

WebEnvironment.MOCK:

在这种模式下,不会启动真正的嵌入式 Web 服务器,而是使用 MockMvc 框架模拟 HTTP 请求和响应。这样可以在没有真实服务器的情况下测试控制器的行为。适用于测试控制器层的逻辑,但不需要测试整个 Web 应用程序的场景。

WebEnvironment.RANDOM_PORT:

在这种模式下,会启动嵌入式 Web 服务器,并使用一个随机的端口。这允许测试整个应用程序的集成,包括 HTTP 请求和响应。适用于测试整个应用程序的场景,但不会影响外部系统。

WebEnvironment.DEFINED_PORT:

与 RANDOM_PORT 类似,但是在这种模式下,使用的端口是固定的,可以在属性中配置。这适用于需要预定义端口的场景,例如与外部系统集成时。

WebEnvironment.NONE:

在这种模式下,不会启动任何嵌入式 Web 服务器,也不会模拟 HTTP 请求和响应。这种模式适用于单元测试,主要测试业务逻辑,而不涉及与 Web 环境的交互。

properties:

指定配置属性。

@SpringBootTest(properties = "my.property=value")

exclude:

指定要排除的配置类。

@SpringBootTest(exclude = {SomeConfiguration.class, AnotherConfiguration.class})

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 786229024,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】Spring Boot进行单元测试,一个思路解决重启低效难题!,程序员,软件测试,IT,spring boot,单元测试,后端,自动化测试,测试工具,python,java
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。Spring Boot进行单元测试,一个思路解决重启低效难题!,程序员,软件测试,IT,spring boot,单元测试,后端,自动化测试,测试工具,python,java
Spring Boot进行单元测试,一个思路解决重启低效难题!,程序员,软件测试,IT,spring boot,单元测试,后端,自动化测试,测试工具,python,java

Spring Boot进行单元测试,一个思路解决重启低效难题!,程序员,软件测试,IT,spring boot,单元测试,后端,自动化测试,测试工具,python,java

Spring Boot进行单元测试,一个思路解决重启低效难题!,程序员,软件测试,IT,spring boot,单元测试,后端,自动化测试,测试工具,python,java文章来源地址https://www.toymoban.com/news/detail-752873.html

到了这里,关于Spring Boot进行单元测试,一个思路解决重启低效难题!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决Spring Boot单元测试中@Autowired依赖注入失效的问题

    本文介绍了在Spring Boot单元测试中使用@Autowired注入的方法中,由于使用反射导致依赖注入失效的问题,以及如何使用AutowiredAnnotationBeanPostProcessor手动处理依赖注入来解决这个问题。 在Spring Boot的单元测试中,我们经常使用@Autowired注解来自动注入需要测试的对象或依赖。然而,

    2024年02月03日
    浏览(38)
  • Spring Boot单元测试

    ❤️❤️❤️SSM专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️ Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客 Spring Boot 中进行单元测试是一个常见的做法,可以帮助你验证应用程序的各个组件是否按预期工作。所以我们有必要去学习一番! 单元测试

    2024年02月13日
    浏览(34)
  • 【Spring Boot】单元测试

    单元测试在日常项目开发中必不可少,Spring Boot提供了完善的单元测试框架和工具用于测试开发的应用。接下来介绍Spring Boot为单元测试提供了哪些支持,以及如何在Spring Boot项目中进行单元测试。 单元测试主要用于测试单个代码组件,以确保代码按预期方式工作。目前流行的

    2024年02月16日
    浏览(36)
  • Spring boot 集成单元测试

    1.引入依赖 2.  3.编写测试类

    2024年02月11日
    浏览(38)
  • 【Spring Boot】SpringBoot 单元测试

    单元测试(unit testing),是指对软件中的最⼩可测试单元进⾏检查和验证的过程就叫单元测试。 1、可以⾮常简单、直观、快速的测试某⼀个功能是否正确。 2、使⽤单元测试可以帮我们在打包的时候,发现⼀些问题,因为在打包之前,所以的单元测试必须通过,否则不能打包

    2024年02月07日
    浏览(40)
  • Spring Boot异常处理和单元测试

    SpringBoot默认的处理异常的机制:SpringBoot 默认的已经提供了一套处理异常的机制。一旦程序中出现了异常 SpringBoot 会向/error 的 url 发送请求。在 springBoot 中提供了一个叫 BasicErrorController 来处理/error 请求,然后跳转到默认显示异常的页面来展示异常信息 如 果我 们 需 要 将 所

    2024年03月17日
    浏览(27)
  • Spring Boot 做单元测试,真心强悍!

    Spring Boot 提供了丰富的测试功能,主要由以下两个模块组成: spring-boot-test :提供测试核心功能。 spring-boot-test-autoconfigure :提供对测试的自动配置。 Spring Boot 提供了一个  spring-boot-starter-test 一站式启动器,如以下依赖配置所示。 测试启动器依赖不仅包含以上两个 Spring Bo

    2024年02月04日
    浏览(32)
  • 三个要点,掌握Spring Boot单元测试

    单元测试是软件开发中不可或缺的重要环节,它用于验证软件中最小可测试单元的准确性。 结合运用Spring Boot、JUnit、Mockito和分层架构,开发人员可以更便捷地编写可靠、可测试且高质量的单元测试代码,确保软件的正确性和质量。 本文将从与单元测试相关的技术主题开始,

    2024年02月08日
    浏览(33)
  • Spring Boot 单元测试,保姆级教程!

    概念: 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。在Java中单元测试的最小单元是类。 单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。执行单元测试,就是为了证明这段代码的行为和我们期望是

    2024年02月03日
    浏览(32)
  • Spring Boot 单元测试 0基础教程

    咱们以一种通俗易懂的方式,通过一个简单的实例来教你怎么在Spring Boot项目中进行单元测试。 假设你有一个简单的Spring Boot应用,里面有一个UserService接口,以及它的实现类 UserServiceImpl,这个服务有一个方法用来获取用户的问候语。 为了对该方法进行单元测试,我们可以创

    2024年04月16日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包