Springboot中的test

本文介绍如何使用spring-boot-starter-test进行单元测试。通过整合spring-test和junit,简化测试流程。文中详细展示了如何配置Maven依赖,创建测试类及运行测试的方法。

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

spring-boot-starter-test整合了spring-test和junit,简化了test,好用极了。直接贴代码讲解吧
1.maven配置:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <!-- 表示开发的时候引入,发布的时候不会加载此包 -->
    <scope>test</scope>
</dependency>

这在创建Spring Initializr项目时,自带进来的test配置,也自动生成了test文件夹,文件夹下是一个test项目,自带了一个应用程序类**ApplicationTests:(@RunWith、@SpringBootTest两个标注标明了此类是测试启动类,@Test标注了测试方法)

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
    @Test
    public void contextLoads() {
    }
}

2.我们直接在这个类里添加测试方法,像开发中引用service一样,在测试方法体里去调用就可以了:
这里写图片描述
3.运行测试
在方法体中右键,选择“Run testGetUser”,即可启动测试。IDEA窗口下方会出现测试窗口。
这里写图片描述

### 如何在 Spring Boot 测试中配置和使用事务管理 #### 使用 `@Transactional` 注解进行单元测试 为了确保测试环境下的数据库交互能够自动回滚,防止脏数据影响其他测试,在编写集成测试时可以利用 `@Transactional` 注解来包裹整个测试类或单个方法。这会使得每次执行完测试之后都会触发一次事务的回滚操作。 ```java import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.transaction.annotation.Transactional; @DataJpaTest @Transactional public class MyServiceTests { @Autowired private MyRepository myRepository; @Test public void testSaveEntity() { // Arrange & Act Entity entity = new Entity(); myRepository.save(entity); // Assert (验证逻辑) } } ``` 当测试结束时,由于 `@Transactional` 的存在,所有的持久化变更将会被撤销[^1]。 #### 自定义事务行为 如果希望某些特定情况下不启用默认的回滚机制,则可以通过设置参数来自定义: ```java @Test @Transactional(propagation = Propagation.NOT_SUPPORTED) void shouldNotUseTransactionForThisMethod(){ // Test code here... } ``` 这里展示了如何禁用某个具体测试案例上的事务支持。 对于更复杂的场景比如涉及多个存储系统的分布式事务测试,推荐采用 JTA 来统一管理和协调不同资源间的事务边界[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值