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上
目录
相关文章
|
5月前
|
Java 测试技术 Spring
Spring Boot 基于 JUnit 5 实现单元测试
Spring Boot 基于 JUnit 5 实现单元测试
152 0
|
5月前
|
druid Java 关系型数据库
SpringBoot整合junit、整合Mybatis及使用Druid数据源
SpringBoot整合junit、整合Mybatis及使用Druid数据源
73 0
|
4月前
|
Java 测试技术 持续交付
Springboot中JUNIT5单元测试+Mockito详解
Springboot中JUNIT5单元测试+Mockito详解
479 1
|
4月前
|
Java 测试技术
|
4月前
|
监控 druid Java
Springboot用JUnit测试接口时报错Failed to determine a suitable driver class configure a DataSource: ‘url‘
Springboot用JUnit测试接口时报错Failed to determine a suitable driver class configure a DataSource: ‘url‘
84 0
|
5月前
|
Java 关系型数据库 MySQL
SpringBoot整合JUnit、MyBatis、SSM
SpringBoot整合JUnit、MyBatis、SSM
38 4
|
5月前
|
移动开发 前端开发 Java
springboot数据库回滚失败原因
springboot数据库回滚失败原因
44 1
|
5月前
|
Java 测试技术
SpringBoot整合Junit进行单元测试
SpringBoot整合Junit进行单元测试
65 0
|
5月前
|
JSON Java 测试技术
SpringBoot 整合 JUnit5
Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库作为最新版本的JUnit框架,JUnit5与之前版本的Junit框架有很大的不同。由三个不同子项目的几个不同模块组成。 JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage JUnit Platform: Junit Platform是在JVM上启动测试框架的基础,不仅支持Junit自制的测试引擎,其他测试引擎也都可以接入。 JUnit Jupiter: JUnit Jupiter提供了JUnit5的新的编程模型,是JUnit5新特性的核心。
|
12月前
|
Java 测试技术 C++
Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理
Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理
122 0
Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理