如果我在集成测试中使用的是单例数据库容器,那么在每次测试之前,我如何确保数据库处于干净状态(没有数据)?代码库使用Liquibase进行数据迁移。
如果要在每次测试之后/之前删除数据库中的所有行,可以:
@transactional
,那么Spring将在每次测试后回滚事务jdbctemplate
/YourEntityRepository
(Spring Data JPA Repositories)并使用delete
SQL查询(jdbctemplate
)或.deleteAll()
(Spring Data JPA Repositories)删除它们,作为JUnit Jupiters的一部分@Beforeeach
/@Aftereach
您从Liquibase应用的DDL脚本(create
)将保留下来,并且每个测试都从一个有效的模式开始。
我正在尝试用liquibase为一些测试设置数据库模式和一些测试数据。每个测试都有一个单独的changelog,它为测试设置模式和一些特定的数据。 为了使我的测试工作,我需要在每次测试之前删除模式,并用新的测试数据填充它。然而,这似乎并不奏效,因为有些测试正在失败,因为旧的测试数据仍然可用。我觉得我的配置有些东西不对。如何在每次测试之前强制liquibase删除模式?
我正在使用SpringBoot2,我正在尝试使用H2 Liquibase JUNIT配置一个单元测试。 我认为liquibase没有执行更改日志文件并应用SQL命令,单元测试不识别我的表。 我在文件中放入了错误的sql,以查看是否执行了changelog文件,但似乎没有执行。 为什么我的应用程序不能访问表?也许liquibase没有执行? 在src/test/resource中,我有一个文件:ap
我正在尝试为kafka消息传递设置集成测试,并从使用Embedded-Kafka转向使用TestContainers。给定docker-compose的以下配置和所有集成测试的基类: Kafka-compose.yaml: 我遇到的问题很少: 似乎spring-Kafka和它的在所有可能的用@springboottest注释的测试中都是活动的,而不仅仅是在Kafka特定的测试中。这意味着发送到Ka
类似问题:在Android Studio中的Android工具测试和单元测试之间共享代码 我的设置如下: 包含单元测试的< li> 文件夹。这些可以是Java或Kotlin类 包含仪器测试的< li> 。这些也可以是Java或Kotlin类 < li> 是一个文件夹,其中包含一组在单元测试和测量测试之间共享的实用程序。 这种共享在gradle中定义为: 这允许< code>src/test或< c
我的测试顺序如下: 在这四个测试中,我创建了同一个实体。由于我没有在每个测试用例之后从表中删除记录,因此会得到以下异常: 我想用以下约束条件来解决这个问题: null
相关pom.xml 我的测试类: 我只是在试着测试数据库。 类级别上的@SQL注释不能像我的情况那样与Testcontainers初始化一起工作吗? 这里需要什么使我的两个初始脚本都运行? 我尝试使用.WithInitScript,它运行了。但是,我有很多数据要初始化,而且文件太大(而且会增长),所以我将DDL(模式)和Inserts(数据)分开。现在,我的问题是如何使用“WithInitScri