0

我正在使用 Testcontainers 开发一些组件测试。我可以同步服务就绪测试。但是,一旦服务准备好,我需要准备夹具并运行测试,直到夹具完全加载。

被测容器写了一个日志,我可以用它来了解夹具何时完全加载。但是,我找不到在该日志上同步的方法。

Testcontainers 库是否为此提供任何实用程序?

4

2 回答 2

1

如果您使用的是 GenericContainer 对象类型,您可以简单地执行以下操作:

WaitingConsumer consumer = new WaitingConsumer();
container.followOutput(consumer, STDOUT);
consumer.waitUntil(frame -> 
    frame.getUtf8String().contains("STARTED"), 30, TimeUnit.SECONDS);

否则,您可以使用以下方法处理整个日志:

container.getLogs();

希望这有帮助!

于 2021-09-08T09:47:15.580 回答
0

您可以使用日志消息等待策略来实现它。

public GenericContainer containerWithLogWait = new GenericContainer(DockerImageName.parse("redis:5.0.3"))
    .withExposedPorts(6379)
    .waitingFor(
        Wait.forLogMessage(".*Ready to accept connections.*\\n", 3)
    );

您还可以通过扩展它来创建自己的策略AbstractWaitStrategy

查看此页面了解更多详情。

于 2021-09-09T00:06:47.320 回答