文章目录
一、使用方式
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 等更细粒度的测试注解更重,因为它加载了完整的应用上下文。
-
对于大型应用,可能需要较长的时间来启动整个上下文,因此在进行单元测试时,考虑使用更轻量级的测试策略。
-
在某些情况下,你可能想要覆盖默认行为,比如关闭自动配置或者自定义嵌入式容器的设置。