@SpringBootTest注解
时间: 2025-05-14 16:36:11 浏览: 15
### 使用 `@SpringBootTest` 注解的功能和用法
#### 测试类配置
为了测试整个 Spring 应用程序上下文,可以使用 `@SpringBootTest` 注解。此注解会加载完整的应用程序上下文并允许执行集成测试[^1]。
```java
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class MyApplicationTests {
@Autowired
private ApplicationContext applicationContext;
@Test
public void contextLoads() {
assertNotNull(applicationContext);
}
}
```
上述代码展示了如何通过 `@SpringBootTest` 来创建一个简单的测试案例来验证应用上下文是否能够成功加载。这里的关键在于 `ApplicationContext` 的自动注入以及断言其不为空。
#### 自定义 Web 环境模式
默认情况下,`@SpringBootTest` 将启动完全的 web 环境。然而,可以通过设置属性来自定义环境:
- **DEFINED_PORT**: 启动服务器监听固定端口。
- **RANDOM_PORT**: 启动服务器监听随机可用端口。
- **MOCK**: 不实际启动 Servlet 容器而是模拟 HTTP 请求响应行为。
- **NONE**: 不提供任何 Web 环境支持。
```java
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class RandomPortWebIntegrationTests {}
```
这段代码指定了当运行此类中的测试方法时应采用随机端口号的方式启动嵌入式的 Tomcat 或其他容器实例[^2]。
#### 配置文件管理
在某些场景下可能希望针对不同类型的测试指定不同的配置文件路径或激活特定 profile:
```properties
spring.profiles.active=test
```
或者直接在测试类上声明:
```java
@SpringBootTest(classes = MyAppConfig.class, properties = "spring.config.location=classpath:test-application.yml")
```
这使得可以在隔离环境中进行更精确细致化的单元/集成测试工作而不影响到生产环境下的正常运作情况[^3].
阅读全文
相关推荐

















