当前位置: 首页 > news >正文

SpringBoot数据层测试事务回滚

目录

数据层测试事务回滚

dao下

pojo对象

service

测试用例数据设定


数据层测试事务回滚

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运行

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

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

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

测试用例数据设定

测试用例数据通常采用随机值进行测试,使用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);
    }
}

运行结果

相关文章:

  • 【计算机毕业设计选题】10套易过的精品毕设项目分享(源码+论文)
  • 【CVAdd】Filter 滤波器
  • 常用安卓开发技巧汇总
  • Vue组件库实现按需引入可以这么做
  • 精选32个最新Python实战项目(附源码),拿走就用
  • MYSQL-约束,条件判断,组函数
  • Docker环境下使用docker-compose一键式搭建RocketMQ(4.5.0版本)集群及其管理工具(外网版)
  • Python爬虫之Js逆向案例(11)-百度翻译
  • NX二次开发-外部开发模式exe(不打开NX进行后台操作)以及封装exe传参调用
  • 分享8个前端可以制作360度WebVr全景视图框架
  • 物联网毕设 -- 智能厨房检测系统
  • I2C基础
  • 社区老年人服务系统设计与实现(安卓APP+SSH后台+MYSQL)
  • 《Unity Magica Cloth从入门到详解》之(4)MeshCloth网布
  • uniapp小程序长按识别关注公众号
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • ES2017异步函数现已正式可用
  • Fastjson的基本使用方法大全
  • iOS 颜色设置看我就够了
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Java Agent 学习笔记
  • java8-模拟hadoop
  • JavaScript设计模式与开发实践系列之策略模式
  • Linux下的乱码问题
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Webpack 4x 之路 ( 四 )
  • 二维平面内的碰撞检测【一】
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 机器学习学习笔记一
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 通过几道题目学习二叉搜索树
  • 线上 python http server profile 实践
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • # C++之functional库用法整理
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #LLM入门|Prompt#3.3_存储_Memory
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (160)时序收敛--->(10)时序收敛十
  • (c语言)strcpy函数用法
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)计算机毕业设计大学生兼职系统
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (七)c52学习之旅-中断
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • .net SqlSugarHelper
  • .NET 使用 XPath 来读写 XML 文件
  • .NET 指南:抽象化实现的基类
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .NET中winform传递参数至Url并获得返回值或文件
  • @Bean, @Component, @Configuration简析