检查 TestContainer 的内容
Examining contents of TestContainers
我正在使用 PostgreSQL TestContainer 在 Spring Boot 中测试 Liquibase 架构迁移。我没有任何存储库。我想知道我是否可以 see/access TestContainer 的内容,并测试架构迁移。
是的,您可以像访问任何其他 Docker 容器一样访问由 Testcontainers 生成的 Docker 容器。但是,对 Testcontainers 使用 JUnit 5 扩展或 JUnit 4 规则将在测试后关闭容器。
您可以将 coontainer re-usability feature 用于 Testcontainers(自 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 的数据库视图并检查您的数据库 tables.
访问凭据是您在测试中指定的凭据:
static PostgreSQLContainer postgreSQLContainer = (PostgreSQLContainer) new PostgreSQLContainer()
.withDatabaseName("differentDatabaseName")
.withUsername("duke")
.withPassword("s3cret")
.withReuse(true);
作为解决方法,您还可以在测试结束时放置一个断点,调试测试,然后快速检查您的数据库。
更新:如果您想验证您的模式的有效性,您可以为此使用休眠特性:
spring.jpa.hibernate.ddl-auto=validate
这将验证您的 Java 实体设置是否与应用程序启动时的基础数据库架构相匹配。您还可以将其添加到生产 application.properties
文件中,因为如果存在不匹配(例如缺少 table 列),您的应用程序将无法启动。
要使其在测试中起作用,您需要使用 @DataJpaTest
或使用 @SpringBootTest
将整个应用程序上下文连接到您的本地容器。
查找更多信息here。
我正在使用 PostgreSQL TestContainer 在 Spring Boot 中测试 Liquibase 架构迁移。我没有任何存储库。我想知道我是否可以 see/access TestContainer 的内容,并测试架构迁移。
是的,您可以像访问任何其他 Docker 容器一样访问由 Testcontainers 生成的 Docker 容器。但是,对 Testcontainers 使用 JUnit 5 扩展或 JUnit 4 规则将在测试后关闭容器。
您可以将 coontainer re-usability feature 用于 Testcontainers(自 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 的数据库视图并检查您的数据库 tables.
访问凭据是您在测试中指定的凭据:
static PostgreSQLContainer postgreSQLContainer = (PostgreSQLContainer) new PostgreSQLContainer()
.withDatabaseName("differentDatabaseName")
.withUsername("duke")
.withPassword("s3cret")
.withReuse(true);
作为解决方法,您还可以在测试结束时放置一个断点,调试测试,然后快速检查您的数据库。
更新:如果您想验证您的模式的有效性,您可以为此使用休眠特性:
spring.jpa.hibernate.ddl-auto=validate
这将验证您的 Java 实体设置是否与应用程序启动时的基础数据库架构相匹配。您还可以将其添加到生产 application.properties
文件中,因为如果存在不匹配(例如缺少 table 列),您的应用程序将无法启动。
要使其在测试中起作用,您需要使用 @DataJpaTest
或使用 @SpringBootTest
将整个应用程序上下文连接到您的本地容器。
查找更多信息here。