首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查TestContainers的内容

检查TestContainers的内容
EN

Stack Overflow用户
提问于 2020-07-30 22:50:59
回答 1查看 1.7K关注 0票数 3

我正在使用PostgreSQL TestContainer来测试Spring中的Liquibase模式迁移。我没有任何建议。我想知道是否能够看到/访问TestContainer的内容,并测试模式迁移。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-31 07:21:12

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

您可以使用用于测试容器的同龄人可重用特性 (自1.12.3以来处于alpha状态),以确保容器处于启动状态,并在测试完成后运行。

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

代码语言:javascript
复制
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的数据库视图连接到数据库上的数据库,并检查数据库表。

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

代码语言:javascript
复制
static PostgreSQLContainer postgreSQLContainer = (PostgreSQLContainer) new PostgreSQLContainer()
  .withDatabaseName("differentDatabaseName")
  .withUsername("duke")
  .withPassword("s3cret")
  .withReuse(true);

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

UPDATE:如果要验证模式的有效性,可以为此使用Hibernate特性:

代码语言:javascript
复制
spring.jpa.hibernate.ddl-auto=validate

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

要使其在测试中有效,您需要使用@DataJpaTest或使用@SpringBootTest连接到本地容器的整个应用程序上下文。

查找更多信息,这里

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63182498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档