溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

SpringBoot數(shù)據(jù)層測試事務(wù)回滾如何實現(xiàn)

發(fā)布時間:2022-10-24 09:11:48 來源:億速云 閱讀:123 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細介紹“SpringBoot數(shù)據(jù)層測試事務(wù)回滾如何實現(xiàn)”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“SpringBoot數(shù)據(jù)層測試事務(wù)回滾如何實現(xiàn)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

    數(shù)據(jù)層測試事務(wù)回滾

    pom.xml導(dǎo)入對應(yīng)的一些坐標,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數(shù)據(jù)層測試事務(wù)回滾如何實現(xiàn)

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

    SpringBoot數(shù)據(jù)層測試事務(wù)回滾如何實現(xiàn)

    為了測試用例添加事務(wù),加上@Transactional,SpringBoot會對測試用例對應(yīng)的事務(wù)提交操作進行回滾,也就是springboot識別到這個是test,所以不會進行提交事務(wù),但是會占用id。不會有數(shù)據(jù)顯示。

    如果想在測試用例中提交事務(wù),可以通過@Rollback(false),不回滾,默認值是true,加上false就不會回滾,測試數(shù)據(jù)就能在數(shù)據(jù)庫中顯示出來。

    測試用例數(shù)據(jù)設(shè)定

    測試用例數(shù)據(jù)通常采用隨機值進行測試,使用SpringBoot提供的隨機數(shù)位器賦值

    SpringBoot數(shù)據(jù)層測試事務(wù)回滾如何實現(xiàn)

    ${random.int}表示隨機整數(shù)

    ${random.int(10)}表示10以內(nèi)的隨機數(shù)

    ${random.int(10,20)}表示10到20的隨機數(shù)

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

    配置文件下

    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);
        }
    }

    運行結(jié)果

    SpringBoot數(shù)據(jù)層測試事務(wù)回滾如何實現(xiàn)

    讀到這里,這篇“SpringBoot數(shù)據(jù)層測試事務(wù)回滾如何實現(xiàn)”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI