返回介绍

3.4 测试与部署

发布于 2025-04-21 20:58:43 字数 2754 浏览 0 评论 0 收藏

Spring Boot 之所以使用简单,是因为它的工程最终打包成了一个 JAR 包,并内嵌了 Web 容器,如 Tomcat 等,然后以 JAR 包的形式直接运行。随着云原生和云平台的发展,Spring Boot 与 Spring Cloud 可以完美集成并被部署到云平台上。

3.4.1 测试

Spring Boot 提供了很多实用的测试注解,可以在测试时使用。通常情况下,测试由 spring-boot-test(包含核心元素)和 spring-boot-test-autoconfigure(支持自动配置测试)两个模块支持,开发人员只需要依赖 spring-boot-starter-test 包即可。如果应用依赖了 spring-boot-starter-test 包,则同时依赖表 3.3 中的类库。

表 3.3 测试依赖

058-1

如果使用的是 JUnit 4,则需要添加 @RunWith(SpringRunner.class)注解;如果使用的是 JUnit 5,则不需要添加该注解。Spring Boot 提供了 @SpringBootTest 注解,当需要测试 Spring Boot 的特性时,该注解可以作为 @ContextConfiguration 注解的替代。@SpringBootTest 注解通过 SpringApplication 创建测试中使用的 ApplicationContext。

在默认情况下,@SpringBootTest 注解不会启动服务器。可以通过设置 @Spring-BootTest 注解的 webEnvironment 属性来修改测试的运行方式。webEnvironment 属性的取值如下:

  • MOCK(默认):加载 Web 应用程序上下文并提供模拟 Web 环境。使用该属性值不会启动嵌入的服务器,它可以与 @AutoConfigureMockMvc 或 @AutoConfigure-WebTestClient 注解结合使用。
  • RANDOM_PORT:加载一个 WebServerApplicationContext 应用上下文并提供一个真实的 Web 环境。启动嵌入的服务器并在随机端口上进行监听。
  • DEFINED_PORT:加载 WebServerApplicationContext 应用上下文并提供真实的 Web 环境。启动嵌入的服务器并在配置的端口上监听(在 application.properties 文件中配置)或者在默认端口 8080 上监听。
  • NONE:使用 SpringApplication 加载 ApplicationContext 应用上下文,但不提供任何 Web 环境。

以 3.1.2 节中新建的工程为例,测试一下 HiController.java 接口。代码如下:

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.
RANDOM_PORT)
class SpringBootExampleApplicationTests {
        @Test
        public void testHiController(@Autowired TestRestTemplate rest
Template) {
                String body = restTemplate.getForObject("/hi/springBoot",
String.class);
                System.out.println(body);
        }
}

如要要测试 Spring MVC controllers 是否正确工作,可以使用 @WebMvcTest 注解;如果要测试 WebFlux,则使用 @WebFluxTest 注解。Spring Boot test 框架还提供了很多数据测试的注解,如 @DataJpaTest、@JdbcTest、@DataMongoTest、@Data-RedisTest,以及客户端测试注解 @RestClientTest 等。

3.4.2 打包

在使用 Spring Boot 进行开发时,如果希望修改类文件或者配置文件后让修改立即生效,则需要用到热部署。在 Spring Boot 应用的 pom 文件中添加以下依赖:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
</dependency>

如果是 MAVEN 工程,Spring Boot 提供了打包插件,在 pom 文件中集成以下插件即可。

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <executable>true</executable>
    </configuration>
</plugin>

打包之后是一个 JAR 包,直接使用$ java -jar spring-boot-example.jar 命令即可运行。Spring Boot 的测试和部署会在后面的章节中继续介绍。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。