postgresql - 检查 TestContainers 的内容

标签 postgresql spring-boot docker liquibase testcontainers

我正在使用 PostgreSQL TestContainer 来测试 Spring Boot 中的 Liquibase 架构迁移。我没有任何存储库。我想知道我是否可以查看/访问 TestContainer 的内容,并测试架构迁移。

最佳答案

是的,您可以像访问任何其他 Docker 容器一样访问由 Testcontainers 生成的 Docker 容器。但是,对 Testcontainers 使用 JUnit 5 扩展或 JUnit 4 规则将在测试后关闭容器。

您可以使用 coontainer re-usability feature用于测试容器(自 1.12.3 以来处于 alpha 状态),用于确保您的容器在测试完成后启动并运行。

由于 Testcontainers 将在临时端口上启动容器,只需执行 docker ps 并检查容器端口映射到哪个本地端口。例如:

b0df4733babb        postgres:9.6.12      "docker-entrypoint.s…"   19 seconds ago      Up 18 seconds       0.0.0.0:32778->5432/tcp   inspiring_dewdney

您现在可以连接到 localhost:32778 上的数据库,例如PgAdmin 或 IntelliJ IDEA 的数据库 View 并检查您的数据库表。

访问凭据是您在测试中指定的凭据:

static PostgreSQLContainer postgreSQLContainer = (PostgreSQLContainer) new PostgreSQLContainer()
  .withDatabaseName("differentDatabaseName")
  .withUsername("duke")
  .withPassword("s3cret")
  .withReuse(true);

作为一种解决方法,您还可以在测试结束时设置断点、调试测试并快速检查您的数据库。

更新:如果您想验证架构的有效性,您可以为此使用 Hibernate 功能:

spring.jpa.hibernate.ddl-auto=validate

这将验证您的 Java 实体设置是否与应用程序启动时的底层数据库架构匹配。您还可以将此添加到您的生产 application.properties 文件中,因为如果存在不匹配(例如缺少表、列),您的应用程序将无法启动。

为了在测试中工作,您需要使用 @DataJpaTest 或使用 @SpringBootTest 将整个应用程序上下文连接到本地容器。

查找更多信息here .

关于postgresql - 检查 TestContainers 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63182498/

相关文章:

wordpress - Docker 卷和 Kubernetes 卷

Docker:处理用户上传和保存文件

sql - 如何创建一个表,其中一列包含其他表的名称

ruby-on-rails - datetime_select 的多参数错误

intellij-idea - IntelliJ 15,SpringBoot devtools livereload 不起作用

bash - 从 docker 主机在 docker 容器内创建符号链接(symbolic link)

python - 如何使用 SQLAlchemy TypeDecorators 编译原始 SQL

function - 在 PL/pgSQL 中执行 SELECT 语句并丢弃结果

java - 如何摆脱ConstraintValidatorContext的title属性中的propertyPath错误响应 - SpringBoot自定义验证

spring-boot - 如何安装和运行 wkhtmltopdf Docker 镜像