如何获取使用 Testcontainers 执行的命令退出代码?

Posted

技术标签:

【中文标题】如何获取使用 Testcontainers 执行的命令退出代码?【英文标题】:How can I Get command exit code executed with Testcontainers? 【发布时间】:2018-03-29 13:35:05 【问题描述】:

使用GenericContainer#execInContainer我只能得到stdout或stderr。

有什么方法可以获取执行命令的退出代码

我不能依赖 stderr 中存在的文本。我执行的应用程序将一些信息打印到 stderr,但以代码 0 退出。

【问题讨论】:

【参考方案1】:

execInContainer 只是从 docker-java 到 execCreateCmd/execStartCmd 的快捷方式。不幸的是,他们的 API 没有提供获取退出代码的方法。

但您可以使用内置的 shell 功能,只需将代码作为 stdout/stderr 的一部分返回:

$ sh -c 'false; echo "ExitCode=$?"'
ExitCode=1

false 是你的命令

【讨论】:

这是gist implementing this solution。在 Testcontainers 中包含这样的内容是否有意义?【参考方案2】:

您可以使用inspectExecCmd(execId)获取有关执行命令的信息,也可以从inspectExecCmd的响应中获取退出代码

【讨论】:

以上是关于如何获取使用 Testcontainers 执行的命令退出代码?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 testcontainers kafka 映像中执行 kafka-configs 命令

使用 testcontainers 测试 kafka 和 spark

使用 Testcontainers 执行运行集成测试的 Gitlab CI 管道作业时出现问题

SpringBootTest、Testcontainers、容器启动——映射端口只能在容器启动后获取

如何使用 Testcontainers 发送信号?

Spring Boot TestContainers 映射的端口只能在容器启动后获取