当前位置: 首页 > 知识库问答 >
问题:

当使用Spring Boot和LiquiBase时,如何在每次集成测试后清理数据库表?

邢皓
2023-03-14

我的测试顺序如下:

test1();
test2();
test3();
test4();

在这四个测试中,我创建了同一个实体。由于我没有在每个测试用例之后从表中删除记录,因此会得到以下异常:org.springframework.dao.DataIntegrityViolationException

我想用以下约束条件来解决这个问题:

    null

共有1个答案

朱鹏
2023-03-14

@datajpatest注释测试类。从文档中可以看到:

默认情况下,使用@datajpatest注释的测试是事务性的,并在每个测试结束时回滚。它们还使用嵌入式内存数据库(替换任何显式或通常是自动配置的数据源)。

例如使用JUnit4:

@RunWith(SpringRunner.class)
@DataJpaTest
public class MyTest { 
//...
}
@DataJpaTest
public class MyTest { 
//...
}
 类似资料:
  • 问题内容: 我已经在项目中编写了一些JUnit测试,这些测试用于在setup方法中填充数据。现在我已经将maven添加到我的项目中,并且我想执行所有来自maven的测试用例,即使用mvn test。现在的问题是,在运行每个测试类之后,不会清除我的数据库。每个类的测试用例运行后,我需要清除HSQLDB。 问题答案: 您可以通过删除架构来清除数据。默认模式称为PUBLIC。如果执行下面的SQL语句,它

  • 我认为它正在发生: 我尝试执行测试。 H2数据库用每个changelog(初始和海关)初始化 开始执行测试。 在每次测试之前,不会删除H2数据库,而是调用changelog(或者只调用我的自定义changelog)。 我的自定义changelogs失败,因为它找不到在点2时删除的登录列,并且它不是由初始ChangeLog“Restaured”的。 完整版本:我用4.8.0生成了一个JHipster

  • 如果我在集成测试中使用的是单例数据库容器,那么在每次测试之前,我如何确保数据库处于干净状态(没有数据)?代码库使用Liquibase进行数据迁移。

  • 我正在使用Spring boot framework(V2.0.2)构建一个REST服务,其中我有在数据库上运行的集成测试。我搜索了很多关于在测试前清理数据库的文章,但不幸的是,我发现它们要么效率低,要么是一个黑客,不适合Spring Boot。你能不能,请忍耐一下,给我一个解决这个问题的好办法? 理想情况下,我认为不应该在每次测试之前清除数据库,而是在一组测试之前清除数据库,比如suite或每个

  • 我想用liquibase变更集进行模拟数据的集成测试,如何使其不影响真实数据库?我从这里找到了部分想法,但我使用的是springboot,我希望有更简单的解决方案。

  • 问题内容: 是否有人对从集成测试框架(如Selenium)进行的回滚数据库事务的最佳实践或首选方式有任何建议? 这是当前的情况:我们有一个.net Web项目,其中包含许多在单元测试环境中可以正常工作的单元测试- 每个测试都继承一个父类,该父类在[SetUp]中打开一个事务,并在其中回滚该事务。 [TearDown]。每次测试后,我们的单元测试数据库都恢复到原始状态。 但是,一旦进入集成环境,情况