温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SpringBoot数据层测试事务回滚如何实现

发布时间:2022-10-24 09:11:48 来源:亿速云 阅读:128 作者:iii 栏目:开发技术

本文小编为大家详细介绍“SpringBoot数据层测试事务回滚如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot数据层测试事务回滚如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    数据层测试事务回滚

    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数据层测试事务回滚如何实现

    读到这里,这篇“SpringBoot数据层测试事务回滚如何实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI