我正在使用PostgreSQL TestContainer来测试Spring中的Liquibase模式迁移。我没有任何建议。我想知道是否能够看到/访问TestContainer的内容,并测试模式迁移。
发布于 2020-07-31 07:21:12
是的,您可以像任何其他Docker容器一样访问Testcontainers生成的Docker容器。但是,使用JUnit 5扩展或测试容器的JUnit 4规则将在测试之后关闭容器。
您可以使用用于测试容器的同龄人可重用特性 (自1.12.3以来处于alpha状态),以确保容器处于启动状态,并在测试完成后运行。
由于测试容器将在一个临时端口上启动容器,因此只需执行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的数据库视图连接到数据库上的数据库,并检查数据库表。
访问的凭据是您在测试中指定的凭据:
static PostgreSQLContainer postgreSQLContainer = (PostgreSQLContainer) new PostgreSQLContainer()
.withDatabaseName("differentDatabaseName")
.withUsername("duke")
.withPassword("s3cret")
.withReuse(true);作为解决办法,您还可以在测试结束时设置一个断点,调试测试,并快速检查数据库。
UPDATE:如果要验证模式的有效性,可以为此使用Hibernate特性:
spring.jpa.hibernate.ddl-auto=validate这将验证您的Java实体设置在应用程序启动时是否与基础数据库模式匹配。您还可以将其添加到生产application.properties文件中,因为如果存在不匹配(例如缺少表、列),应用程序将不会启动。
要使其在测试中有效,您需要使用@DataJpaTest或使用@SpringBootTest连接到本地容器的整个应用程序上下文。
查找更多信息,这里。
https://stackoverflow.com/questions/63182498
复制相似问题