如何防止TestNg + Spring + H2数据库中每个测试的回滚操作?

阿迪拉茹·乌特杰

我正在使用带有h2数据库和testNg的spring boot集成测试进行集成测试。我的spring boot应用程序使用spring data jpa。对于每个测试,我看不到以前测试保存的数据。以下是我的集成测试课程:-

import org.springframework.test.annotation.Rollback;
import org.testng.annotations.Test;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;

@ActiveProfiles("test")
@SpringBootTest(classes = APP.class, webEnvironment = WebEnvironment.RANDOM_PORT)
public class IntegrationTest extends AbstractTestNGSpringContextTests {

    @Test(priority = 1)
    @Rollback(false)
    private void m1() {
        // save data.        
    }

    @Test(priority = 1)
    @Rollback(false)
    private void m2() {        

        // retrieve saved data. (Failed)
    }

 }

我正在使用TestRestTemplate测试测试PUT和POST Rest端点。

RUARO蒂博

您正在使用@SpringBootTest注释,这意味着您将启动整个spring-boot应用程序。@Commit并且当您的测试要有良好的控制时,@Rollback应与@DataJpaTest或类似的东西一起使用@Transactional

这是我的想法:

  • TestNG和Spring都有问题,在这种情况下,我无能为力
  • 或您的代码有错误。您是否尝试过使用一些断点来查看代码是否遍历所有层。

您可以显示更多代码吗?测试代码,控制器,服务和数据层。当然,您的配置类对帮助您很有用


您必须使用注释,@Commit而不是@Rollback

@ActiveProfiles("test")
@SpringBootTest(classes = APP.class, webEnvironment = WebEnvironment.RANDOM_PORT)
public class IntegrationTest extends AbstractTestNGSpringContextTests {

    @Test
    @Commit
    private void m1() {
    }
 }

或者,您可以使用TransactionTemplate更细粒度的控件。看到这个:如何在Spring Boot测试中强制事务提交?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从H2数据库中的用户预加载Spring Boot集成测试?

在JUnit中使用Spring测试服务时如何回滚数据库事务?

如何在Spring Security和默认数据库H2中使用Grails数据库迁移?

如何在H2数据库中存储文件-Spring Boot

如何使用Spring Boot连接到h2数据库?

我如何将作业从Spring项目持久保存到H2数据库

如何配置spring-boot以使用基于文件的H2数据库

Spring + Hibernate如何防止回滚

如何在使用bpchar的h2数据库中执行单元测试?

如何使用Spring Boot将H2作为远程数据库而不是嵌入式模式连接到H2?

使用GRADLEW BUILD运行时,如何在每个测试类之间删除H2数据库?

Spring4 JUnit测试:将SQL加载到H2数据库

使用数据库H2在Spring Boot中进行测试

在集成测试中如何避免数据库回滚后挂起的请求失败?

如何从另一个Spring Boot应用程序访问一个Spring Boot应用程序的内存h2数据库

我的 Spring 数据库 (H2) 不持久

Spring H2嵌入式数据库

如何回滚SQL Server数据库中的数据?

使用 Spring Boot JPA 在 H2 数据库中插入数据

从db2数据库Spring Boot填充内存数据库中的h2

如何解决使用Spring将JSON数据插入H2数据库的错误“无法识别的字段”名称,未标记为可忽略”?

Spring Batch-如何防止批次将事务存储在数据库中

在组件初始化之前如何在Spring Boot测试中加载h2数据

如何在Rails中回滚数据库事务

saveOrUpdate 在带有 H2 数据库的 Spring Data 中不起作用

Spring Boot中的外键问题-H2数据库

在Spring Boot中创建外键-H2数据库

尝试从Java Spring Boot中的H2数据库获取相关实体

内存数据库 spring-boot 中的 h2