SpringBoot数据层测试事务回滚的实现流程

作者:执久呀 时间:2022-05-01 14:36:37 

数据层测试事务回滚

pom.xml导入对应的一些坐标,mysql,Mp,等

<dependency>
           <groupId>com.baomidou</groupId>
           <artifactId>mybatis-plus-boot-starter</artifactId>
           <version>3.5.2</version>
       </dependency>
       <dependency>
           <groupId>org.projectlombok</groupId>
           <artifactId>lombok</artifactId>
           <optional>true</optional>
       </dependency>
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <scope>runtime</scope>
       </dependency>

dao下

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pojo.Person;
import org.apache.ibatis.annotations.Mapper;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
@Mapper//使用注解配置映射
@Component//给spring管理,方便注入
public interface PersonDao extends BaseMapper<Person> {
}

pojo对象

package com.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("tb_user")
public class Person {
private Long id;
private String username;
private String password;
private String gender;
private String addr;
}

service

package com.service;
       import com.baomidou.mybatisplus.core.metadata.IPage;
       import com.baomidou.mybatisplus.extension.service.IService;
       import com.pojo.Person;
public interface PersonService extends IService<Person> {
}

serviceImpl

@Service
public class PersonServiceImpl extends ServiceImpl<PersonDao, Person> implements PersonService {
}

PersonServiceTest类下

package com.serviceTest;
import com.pojo.Person;
import com.service.PersonService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.transaction.annotation.Transactional;
@SpringBootTest
@Transactional
@Rollback(false)
public class PersonServiceTest {
   @Autowired
   private PersonService personService;
   @Test
   void testAdd(){
       Person person = new Person();
       person.setUsername("测试回滚2");
       person.setPassword("1");
       person.setGender("1");
       person.setAddr("1");
       System.out.println(personService.save(person));
   }
}

加上@Transactional运行

SpringBoot数据层测试事务回滚的实现流程

加上@Transactional和@Rollback(false)运行

SpringBoot数据层测试事务回滚的实现流程

为了测试用例添加事务,加上@Transactional,SpringBoot会对测试用例对应的事务提交操作进行回滚,也就是springboot识别到这个是test,所以不会进行提交事务,但是会占用id。不会有数据显示。

如果想在测试用例中提交事务,可以通过@Rollback(false),不回滚,默认值是true,加上false就不会回滚,测试数据就能在数据库中显示出来。

测试用例数据设定

测试用例数据通常采用随机值进行测试,使用SpringBoot提供的随机数位器赋值

SpringBoot数据层测试事务回滚的实现流程

${random.int}表示随机整数

${random.int(10)}表示10以内的随机数

${random.int(10,20)}表示10到20的随机数

其中()可以是任意字符,如[ ],@@都可以。

配置文件下

personRandom:
  age: ${random.int(1,100)}
  name: ${random.value}
  detail: ${random.uuid}

定义一个类接收

@Data
@Component//给spring管理
@ConfigurationProperties(prefix = "personrandom")
public class  Person {
   private String  name;
   private String  age;
   private String  detail;
}

测试类下

@SpringBootTest
public class RandomTest {
@Autowired
   private Person person;
   @Test
   public void KC(){
       System.out.println(person);
   }
}

运行结果

SpringBoot数据层测试事务回滚的实现流程

来源:https://blog.csdn.net/weixin_60719453/article/details/127423660

标签:SpringBoot,数据层,测试,事务回滚
0
投稿

猜你喜欢

  • 利用Flutter制作经典贪吃蛇游戏

    2023-07-21 07:04:13
  • 一文带你学会规则引擎Drools的应用

    2022-04-03 08:40:59
  • SpringBoot使用jasypt加解密密码的实现方法(二)

    2021-10-15 14:16:46
  • 深入了解Java接口回调机制

    2023-11-09 15:52:05
  • MyBatis插入Insert、InsertSelective的区别及使用心得

    2023-08-25 04:34:28
  • Java创建多线程的两种方式对比

    2023-09-14 21:02:49
  • springboot集成RestTemplate及常见的用法说明

    2023-02-17 20:02:27
  • windows定时器配置执行java jar文件的方法详解

    2023-04-17 16:40:21
  • springboot+mybatis-plus 两种方式打印sql语句的方法

    2022-12-29 13:41:11
  • JAVA与SQL 中的null与NULL解析

    2023-06-23 11:51:18
  • Java毕业设计实战之平行志愿管理系统的实现

    2023-09-12 14:34:23
  • SpringBoot上传临时文件被删除引起报错的解决

    2022-05-28 23:46:24
  • 详解Java实现简单SPI流程

    2022-12-11 16:02:23
  • mybatis如何实现saveOrUpdate

    2021-07-18 10:33:11
  • 简单谈谈Struts动态表单(DynamicForm)

    2022-10-07 07:24:29
  • Java在web页面上的编码解码处理及中文URL乱码解决

    2023-08-25 11:10:19
  • SpringBoot基于Sentinel在服务上实现接口限流

    2023-11-27 17:19:25
  • Spring MVC 学习 之 - URL参数传递详解

    2022-03-04 22:05:12
  • C#用户定义类型转换详解

    2022-06-07 11:44:32
  • Java BIO,NIO,AIO总结

    2022-02-07 01:48:28
  • asp之家 软件编程 m.aspxhome.com