详解springboot中junit回滚
发布时间:2020-12-14 21:15:09 所属栏目:Java 来源:网络整理
导读:springboot中使用junit编写单元测试,并且测试结果不影响数据库。 pom引入依赖 如果是IDE生成的项目,该包已经默认引入。 dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependency
springboot中使用junit编写单元测试,并且测试结果不影响数据库。 pom引入依赖 如果是IDE生成的项目,该包已经默认引入。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> 数据库原始数据 原始数据 编写单元测试 package com.mos.quote; import com.mos.quote.model.Area; import com.mos.quote.service.IAreaService; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; import java.util.List; @RunWith(SpringRunner.class) @SpringBootTest public class QuoteApplicationTests { @Autowired private IAreaService areaService; @Test public void contextLoads() { } @Test public void testUpdate(){ Area area = new Area(); area.setCode("001003"); area.setName("洛阳市"); Integer result = areaService.update(area); Assert.assertEquals(1,(long)result); } @Test @Transactional @Rollback public void testUpdate4Rollback(){ Area area = new Area(); area.setCode("001001"); area.setName("郑州市123"); Integer result = areaService.update(area); Assert.assertEquals(1,(long)result); } } 结果数据 结果数据 结论 可以看出code=001001的数据没有更改,而code=001003的数据修改成功。回头看代码: @Transactional表示该方法整体为一个事务, @Rollback表示事务执行完回滚,支持传入一个参数value,默认true即回滚,false不回滚。 该注解一样支持对类的注解,若如此做,对整个class的方法有效。 注解在class上 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |