我正在使用PostgreSQL TestContainer在Spring Boot中测试Liquibase模式迁移。我没有任何资料库。我想知道是否可以查看/访问TestContainer的内容,并测试架构迁移。
是的,您可以像其他任何Docker容器一样访问由Testcontainers生成的Docker容器。但是,对测试容器使用JUnit 5扩展或JUnit 4规则将在测试后关闭容器。
您可以对Testcontainer使用coontainer可重用性功能(从1.12.3开始处于Alpha状态),以确保您的容器在测试完成后正常运行。
由于Testcontainer将在临时端口上启动容器,因此只需执行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);
作为解决方法,您还可以在测试结束时插入断点,调试测试,然后快速检查数据库。
更新:如果要验证架构的有效性,可以为此使用休眠功能:
spring.jpa.hibernate.ddl-auto=validate
这将验证您的Java实体设置在应用程序启动时是否与基础数据库模式匹配。您也可以将其添加到生产application.properties
文件中,因为如果不匹配(例如,缺少表,列),应用程序将无法启动。
为了使它在测试中起作用,您需要使用@DataJpaTest
或使用@SpringBootTest
整个应用程序上下文连接到本地容器。
在此处查找更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句