您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“SpringBoot數(shù)據(jù)層測試事務(wù)回滾如何實現(xiàn)”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“SpringBoot數(shù)據(jù)層測試事務(wù)回滾如何實現(xiàn)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。
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>
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> { }
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; }
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)運行
為了測試用例添加事務(wù),加上@Transactional,SpringBoot會對測試用例對應(yīng)的事務(wù)提交操作進行回滾,也就是springboot識別到這個是test,所以不會進行提交事務(wù),但是會占用id。不會有數(shù)據(jù)顯示。
如果想在測試用例中提交事務(wù),可以通過@Rollback(false),不回滾,默認值是true,加上false就不會回滾,測試數(shù)據(jù)就能在數(shù)據(jù)庫中顯示出來。
測試用例數(shù)據(jù)通常采用隨機值進行測試,使用SpringBoot提供的隨機數(shù)位器賦值
${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)”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(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)容。