【发布时间】:2019-12-23 01:48:19
【问题描述】:
我想进行自动化测试,以测试从数据源 A (oracle) 到数据源 B (postgres) 的导入命令。 两个数据源都应该使用测试容器创建。
基本设置已完成,但问题是:
testcontainers oracleContainer 在 Dockerfile 中定义的入口点发生更改之前启动,以完成并创建测试所需的用户。
容器运行后,会执行一些 sql 脚本来创建表并用数据填充它们。这些脚本失败是因为脚本中提到的用户尚未创建。
testcontainers 没有等待完成设置。
我已经这样设置了容器:
OracleContainer oracleContainer = new OracleContainer("webdizz/oracle-xe-11g-sa:latest")
.withStartupTimeoutSeconds(10000)
.withEnv("DATABASES", "xyz");
数据库肯定是创建的,但是经过了相当长的时间(通过永远运行测试并使用 docker exec 检查数据库来测试)
我尝试了多种方式为容器设置等待策略,例如这样:
oracleContainer.setWaitStrategy(new LogMessageWaitStrategy().withRegEx("*.Enjoy!*"));
但它没有产生任何结果。
通过检查日志:
Slf4jLogConsumer logConsumer = new Slf4jLogConsumer(LOGGER);
oracleContainer.followOutput(logConsumer);
我可以看到 testcontainers 永远不会等待它完成。
我在网上找到的关于这个“错误”或“问题”的所有信息都是 github 上的这个错误报告: https://github.com/testcontainers/testcontainers-java/issues/1292
似乎用户甚至使用与我相同的容器。但是问题中提到的解决方案对我不起作用。
【问题讨论】:
标签: java oracle spring-boot automated-tests testcontainers