@SpringBootTest注解进行单元测试

本文介绍了如何在Springboot项目中使用@SpringBootTest进行单元测试。从创建Springboot项目开始,探讨了测试类的生成和配置,包括测试注解的使用、maven依赖的检查以及测试方法的编写。通过@SpringBootTest注解,可以对项目中的特定action请求或方法进行测试,实现项目的单元测试需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、首先我们通过idea创建一个Springboot项目,项目目录生成后,默认都会带main和test目录,如下:

2、我们在test目录下创建测试类,正常情况下创建项目的时候会自带生成对应的测试类,如下:

此时你发现test注解引用的是junit包

import org.junit.Test;

查看pom文件也会发现引入了如下maven依赖包:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

【说明】:假如没有此依赖包,引入即可;另外要是没有自动生成对应的测试类,我们新建一个类即可(不用纠结)。

3、此时我们发现两个被@Test注解的方法以及类是不可以运行的,查看资料之后发现是需要在对应的方面名称前面和类名前面加上public修饰符即可,需要测试那个方法执行哪个方法就行,如下。

 

4、进一步延伸,若我们需要在测试类里面测试项目中的某个action请求或者是某个操作底层的方法,则需要引入

@RunWith(SpringRunner.class)这个注解(查阅资料说是Junit4需要设置这个注解,Junit5不需要,没做测试),并且在@SpringBootTest注解里面设置项目的启动类。

eg:

@SpringBootTest(classes = Application.class,webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)

第二个参数设置环境,会随机生成端口,也可以用默认定义的端口,看自己需要。

 

。。。。

至此,Springboot测试类单元测试结束。

 

### 使用 `@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].
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值