【问题标题】:Springboot 2.0 JUnit test @Tranactional rollback doesn't worksSpringboot 2.0 JUnit 测试 @Tranactional 回滚不起作用
【发布时间】:2018-07-17 09:04:56
【问题描述】:

我将一些项目从Springboot 1.5.10 迁移到2.0

Springboot 2.0.3ReleaseJDK10mysqlhikari-cp

完成这项工作后,在JUnit test,测试用例中的所有数据都保留在数据库中。我认为它不起作用@Tranactional - org.springframework.transaction.annotation.Transactional

这是application.yml 和测试类的一部分。

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
  jpa:
    show-sql: true
    hibernate:
      ddl-auto: none
    database: mysql
    database-platform: org.hibernate.dialect.MySQL5Dialect

这里是数据源。

@Configuration
@EnableTransactionManagement
public class DatasourceJPAConfig {

    @Bean
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }
}

这是 JUnit 测试类的一部分。

@Transactional
@Rollback(true)
@RunWith(SpringRunner.class)
@ActiveProfiles("local")
@SpringBootTest
public class RepoTests {

     @Autowired
     private TestRepository testRepository;

     @Test
     public void saveTest() {
         var name = "test";
         var description = "test description"

         var item = TestDomain.builder()
             .name(name)
             .description(description)
             .build();

         testRepository.save(item);

         var optional = testRepository.findById(item.getId());

         assertTrue(optional.isPresent());
         assertEquals(optional.get().getDescription(), description);
         assertEquals(optional.get().getName(), name);
     }
}

运行saveTest方法后,在数据库中增加1行。

【问题讨论】:

    标签: spring-boot junit hikaricp


    【解决方案1】:

    添加数据源进行测试,set auto commit 为 false

     @Autowired
     private DataSource dataSource;
    

    内测

      ((HikariDataSource)dataSource).setAutoCommit(false);
    

    【讨论】:

    • 我修复了我的代码,然后检查connection 配置:autoCommit 是false。但测试代码仍然在数据库中写入值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 2017-03-13
    • 1970-01-01
    • 2021-08-04
    • 2012-02-07
    相关资源
    最近更新 更多