@SpringBootTest注解详解

一、使用方式

1.举例

需求在yml配置文件中配置redis的启动参数,编写测试类,测试redisTemplate的方法。

2.引入依赖

	<!--Redis依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!--连接池依赖 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>
        <!--springboot test依赖-->
         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
        </dependency>

2.配置yml文件

spring:
  redis:
    host: 127.0.0.1
    port: 6379
    lettuce:
      pool:
        max-active: 8     #最大连接
        max-idle: 8       #最大空闲连接
        min-idle: 0       #最小空闲连接
        max-wait: 100     #连接等待时间

3.创建测试java文件

一定要在test文件夹的路径下面建立文件进行测试
请添加图片描述

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;


@SpringBootTest
@RunWith(SpringRunner.class)
public class RedisTest {

    @Autowired(required = false)
    private RedisTemplate redisTemplate;

    @Test
    public void testString() {
        //插入一条 string类型数据
        redisTemplate.opsForValue().set("name", " 李四 ");
        //读取一条 string类型数据
        Object name = redisTemplate.opsForValue().get("name");
        System.out.println("name = " + name);
    }

}

4.输出结果

请添加图片描述

二、详解

@SpringBootTest 是 Spring Boot 框架提供的一个注解,用于简化编写 Spring Boot 应用程序的集成测试。这个注解通常被应用在一个测试类上,它会启动一个完整的 Spring 应用上下文,这使得你可以测试你的应用程序的各个部分是如何一起工作的。

1.主要特点

完全加载应用上下文:使用 @SpringBootTest 会加载整个应用上下文,包括所有配置的 Bean、自动配置以及任何其他的配置文件。

2.Web 环境

默认情况下,@SpringBootTest 会创建一个基于 EmbeddedServletContainerFactory 的嵌入式 Servlet 容器来模拟 Web 环境。这意味着你可以测试你的控制器和 RESTful 接口,而不需要运行一个实际的服务器。

3.灵活性

你可以选择不同的方式来启动你的应用上下文,例如使用不同的环境配置(通过 spring.profiles.active 属性)或者自定义嵌入式容器的行为。

4.常用属性

classes:指定要启动的主应用程序类。这是必须的,除非你使用了 @ContextConfiguration 注解。

5.webEnvironment

指定测试时使用的 Web 环境类型。默认是 RANDOM_PORT,意味着将使用一个随机端口启动嵌入式 Servlet 容器。其他选项包括 DEFINED_PORT(使用固定端口)、NONE(不启动任何容器,适合非 Web 应用或需要自定义容器的情况)和 DEPLOYED(部署到外部容器中)。

6.properties

允许你在启动测试上下文时传递系统属性或环境变量。

7.initializationErrorCause

控制初始化错误时抛出的具体异常类型。

二、注意事项

  • @SpringBootTest 可能比 @WebMvcTest 或 @DataJpaTest 等更细粒度的测试注解更重,因为它加载了完整的应用上下文。

  • 对于大型应用,可能需要较长的时间来启动整个上下文,因此在进行单元测试时,考虑使用更轻量级的测试策略。

  • 在某些情况下,你可能想要覆盖默认行为,比如关闭自动配置或者自定义嵌入式容器的设置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值