springboot中junit回滚

简介: springboot中使用junit编写单元测试,并且测试结果不影响数据库。pom引入依赖如果是IDE生成的项目,该包已经默认引入。 org.

springboot中使用junit编写单元测试,并且测试结果不影响数据库。

pom引入依赖

如果是IDE生成的项目,该包已经默认引入。

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

数据库原始数据

img_bb46e7b6978d47250653ecd74d2d8b39.png
原始数据

编写单元测试

package com.mos.quote;

import com.mos.quote.model.Area;
import com.mos.quote.service.IAreaService;
import org.junit.Assert;
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.test.annotation.Rollback;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

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

    @Autowired
    private IAreaService areaService;

    @Test
    public void contextLoads() {
    }

    @Test
    public void testUpdate(){
        Area area = new Area();
        area.setCode("001003");
        area.setName("洛阳市");
        Integer result = areaService.update(area);
        Assert.assertEquals(1, (long)result);
    }

    @Test
    @Transactional
    @Rollback
    public void testUpdate4Rollback(){
        Area area = new Area();
        area.setCode("001001");
        area.setName("郑州市123");
        Integer result = areaService.update(area);
        Assert.assertEquals(1, (long)result);
    }

}

结果数据

img_8dd7092eaf3448efe3c16a8070d8284a.png
结果数据

结论

可以看出code=001001的数据没有更改,而code=001003的数据修改成功。回头看代码:
@Transactional表示该方法整体为一个事务,
@Rollback表示事务执行完回滚,支持传入一个参数value,默认true即回滚,false不回滚。
该注解一样支持对类的注解,若如此做,对整个class的方法有效。

img_c37a08e75fce8cedfe10850d6335050c.png
注解在class上
目录
相关文章
|
4月前
|
druid Java 关系型数据库
SpringBoot整合junit、整合Mybatis及使用Druid数据源
SpringBoot整合junit、整合Mybatis及使用Druid数据源
37 0
|
3月前
|
Java 测试技术
SpringBoot整合Junit进行单元测试
SpringBoot整合Junit进行单元测试
32 0
|
6月前
|
Java C++ Spring
Spring Boot - 用JUnit 5构建完美的Spring Boot测试套件
Spring Boot - 用JUnit 5构建完美的Spring Boot测试套件
63 0
|
6月前
|
Java 测试技术 C++
Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理
Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理
52 0
Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理
|
10月前
|
Java 测试技术 Spring
Mockito + Junit + SpringBoot进行单元测试
Mockito + Junit + SpringBoot进行单元测试
203 0
|
11月前
|
SQL Java 关系型数据库
基于SpringBoot打造在线教育系统(2)-- 深入学习JPA与Junit测试2
现在User表已经有了,而且对应mysql数据库里面,已经建好了用户表。
|
11月前
|
SQL Java 关系型数据库
基于SpringBoot打造在线教育系统(2)-- 深入学习JPA与Junit测试
现在User表已经有了,而且对应mysql数据库里面,已经建好了用户表。
|
消息中间件 Java 测试技术
SpringBoot 集成 JUNIT 测试下单基本流程|学习笔记
快速学习 SpringBoot 集成 JUNIT 测试下单基本流程
155 0
SpringBoot 集成 JUNIT 测试下单基本流程|学习笔记
|
Java Spring
第四篇:SpringBoot如何整合Junit -- @SpringBootTest + @Test
第四篇:SpringBoot如何整合Junit -- @SpringBootTest + @Test
168 0
第四篇:SpringBoot如何整合Junit -- @SpringBootTest + @Test
|
1月前
|
IDE Java 测试技术
Junit 单元测试
JUnit是Java常用的单元测试框架,简化了测试用例的编写和执行。其特点包括简单注解、自动化测试、可扩展性、灵活性及与IDE的集成。使用方法涉及创建测试类、利用注解如@Test、@BeforeEach等管理测试生命周期,以及使用各种断言方法验证结果。此外,JUnit支持参数化测试以覆盖更多输入组合,并能与Maven、Gradle等构建工具集成,提升测试效率和项目管理。
38 1