• Spring Boot单元测试与热部署简析


    1        Spring Boot的简介

    Spring Boot是一个用于构建独立的、生产级别的Spring应用程序的框架。它简化了Spring应用程序的开发过程,提供了自动配置和默认配置,使得开发者只需专注于业务逻辑的实现,而不用去关注繁琐的配置问题。

    Spring Boot具有以下特点:

    1. 简化配置:Spring Boot通过自动配置机制来减少配置的工作量。它会根据项目的依赖自动配置相关的组件,开发者只需要添加依赖和一些简单的配置即可。

    2. 快速开发:Spring Boot提供了一套完整的开发工具,包括代码生成器、热部署等,可以大大加快开发速度。

    3. 微服务支持:Spring Boot天生支持微服务架构,可以方便地构建和部署独立的微服务应用程序。

    4. 内嵌服务器:Spring Boot内嵌了常见的Web服务器(如Tomcat、Jetty等),可以以独立应用程序的形式运行,不需要额外安装Web服务器。

    5. 监控和管理:Spring Boot提供了丰富的监控和管理功能,可以方便地监控应用程序的运行状态和健康状况。

    2       Spring Boot的单元测试以及热部署的相关知识

    Spring Boot 提供了很好的支持来编写单元测试和实现热部署。下面我将简要介绍一下这两个方面的相关知识。

    2.1        单元测试: Spring Boot 使用了JUnit作为默认的单元测试框架,可以通过注解@RunWith(SpringRunner.class)来指定运行器,以便在测试过程中初始化Spring的应用上下文。 你可以使用@SpringBootTest注解标注测试类,以便在测试期间初始化Spring Boot应用的完整上下文。 你还可以使用@MockBean@Mockito等注解来模拟依赖的外部组件或服务。 另外,Spring Boot还提供了一些其他有用的注解,如@DataJpaTest@WebMvcTest等,用于测试特定领域或Web层的代码。

    以下是在Spring Boot中进行单元测试和相关部署的一些常用方法和技巧:

    • 使用JUnit:JUnit是Java开发中最常用的单元测试框架之一。Spring Boot默认使用JUnit进行单元测试,可以使用@RunWith(SpringRunner.class)注解来启用Spring Boot的测试支持。可以使用@Test注解来标记测试方法。

    • 使用Mockito:Mockito是一个用于创建和管理模拟对象(mock objects)的Java库。在单元测试中,我们可以使用Mockito来模拟一些外部依赖,以便更好地控制测试环境。例如,我们可以使用Mockito来模拟数据库访问,而不是实际访问数据库。

    • 使用Spring Boot Test:Spring Boot Test提供了一系列用于测试Spring Boot应用程序的注解和类。例如,@SpringBootTest注解可以用于加载整个应用程序上下文,并进行集成测试。@WebMvcTest注解可以用于测试Web层的控制器。

    • 使用测试配置文件:Spring Boot允许我们在单元测试中使用不同的配置文件,以便更好地控制测试环境。可以使用@TestProperites注解来指定测试配置文件的路径。在测试配置文件中,我们可以覆盖一些配置项,例如数据库连接、缓存配置等。

    • 使用断言和断言库:在单元测试中,我们通常需要验证期望的结果与实际结果是否一致。可以使用JUnit的断言方法,如assertEqualsassertTrue来进行验证。此外,还可以使用一些流行的断言库,如AssertJ和Hamcrest来提供更多的断言方法。

    • 运行单元测试:在Spring Boot中,我们可以使用Maven或Gradle等构建工具来运行单元测试。可以使用mvn testgradle test命令来执行单元测试。

    2.2        热部署: 在开发阶段,热部署可以使你的代码更快地重新部署和运行。Spring Boot支持两种类型的热部署:

    • 通过使用spring-boot-devtools模块,你可以在应用启动时自动配置热部署。只需将该模块添加到依赖中即可,无需进行其他配置。
    • 通过使用spring-boot-maven-plugin插件,你可以在代码改变时重新启动应用。只需在pom.xml文件中添加该插件的配置,并运行mvn spring-boot:run命令即可。
    1. 另外,热部署还有一些其他的选项和配置方式,如使用Spring Loaded或JRebel等第三方工具。

    以下是一些常用的热部署技巧和方法:

    • 使用开发工具的自动重载功能:许多集成开发环境(IDE)和开发工具都提供了自动重载功能,可以自动监视代码的变化并重新加载应用程序。例如,Eclipse中的Spring Loaded插件、IntelliJ IDEA中的Spring Boot DevTools等。
    • 使用Spring Boot的开发者工具(DevTools):Spring Boot DevTools提供了一套开发者工具,可以实现热部署和快速重新启动应用程序。它会监视应用程序的类文件和资源文件的变化,并在检测到变化时自动重新加载应用程序。
    • 使用JRebel:JRebel是一个用于Java开发的工具,可以实现即时的代码热部署。它可以监视文件的变化,并将修改的类文件和资源文件重新加载到运行中的应用程序中,从而避免了重新启动应用程序。
    • 使用Docker容器:将应用程序部署在Docker容器中,可以实现快速部署和更新。通过构建一个容器镜像并运行容器,可以在容器内部使用热部署技术来更新代码。修改后的容器镜像可以轻松地重新部署到生产环境中。

    使用热部署插件:一些特定的框架和工具提供了热部署插件,可以用于在开发过程中实现热部署。例如,Spring Boot的Spring Loaded插件、JRebel的插件等。这些插件通常会提供自动监视和重新加载功能,从而实现快速开发和调试。

    3        效果图

    4        项目搭建步骤

    在prom.xml配置

    1. "1.0" encoding="UTF-8"?>
    2. "http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. 4.0.0
    6. com.sbl
    7. MavenSBlnit
    8. 1.0-SNAPSHOT
    9. 8
    10. 8
    11. spring-boot-starter-parent
    12. org.springframework.boot
    13. 2.1.3.RELEASE
    14. org.springframework.boot
    15. spring-boot-starter-web
    16. org.springframework.boot
    17. spring-boot
    18. org.springframework.boot
    19. spring-boot-starter-test
    20. test
    21. org.springframework.boot
    22. spring-boot-devtools

    在所创项目下的src.main.java的包下面建立controller包,并建立类HelloWporld

    1. package com.sbl.controller;
    2. import org.springframework.web.bind.annotation.GetMapping;
    3. import org.springframework.web.bind.annotation.RestController;
    4. @RestController
    5. public class HelloWorld {
    6. @GetMapping("/hello")
    7. public String hello(){
    8. return "Hello World,i am 小孩 ";
    9. }
    10. }

    在原本创建的类下(及主项目)

    1. package com.sbl;
    2. import org.springframework.boot.SpringApplication;
    3. import org.springframework.boot.autoconfigure.SpringBootApplication;
    4. @SpringBootApplication
    5. public class
    6. MavenApplication {
    7. public static void main(String[] args){
    8. SpringApplication.run(MavenApplication.class,args);
    9. }
    10. }

    在test在Java文件下的包下建立test类

    1. package com.sbl.chapter01sbinit;
    2. import com.sbl.controller.HelloWorld;
    3. import org.junit.Test;
    4. import org.junit.runner.RunWith;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.boot.test.context.SpringBootTest;
    7. import org.springframework.test.context.junit4.SpringRunner;
    8. @RunWith(SpringRunner.class)
    9. @SpringBootTest
    10. public class Chapter01SbinitApplicationTests {
    11. @Autowired
    12. private HelloWorld helloWorld;
    13. @Test
    14. public void contextLoads(){
    15. String hello= helloWorld.hello();
    16. System.out.println(hello);
    17. }
    18. }

  • 相关阅读:
    代理IP与Socks5代理:跨界电商智能爬虫的引擎与安全壁垒
    宠物网页作业HTML 大一作业HTML宠物网页作业 web期末大作业HTML 动物网页作业HTML HTML制作宠物网页作业css
    曾濒临死亡的游戏,摇身变成价值270亿美元的应用,如何做到的?
    redis过期key的清理/删除策略
    java计算机毕业设计火车订票管理系统源码+mysql数据库+系统+lw文档+部署
    内置类string常用接口及模拟实现【C++】【STL】【附题】
    【Try to Hack】IDS入侵检测系统
    自注意力机制
    关于这半年,我在干些什么,有一些想和你分享的话题
    L2搭载率连续两个月站上30%大关,车企加速产业链整合
  • 原文地址:https://blog.csdn.net/qq_64867440/article/details/136589887