0

我通过 Gradle 为构建执行测试套件,它在不同的端口上启动了许多进程。此外,failFast设置true为我的测试任务。因此,当我执行我的套件时会发生以下情况:

  1. 套件启动并启动侦听不同端口的进程/服务器
  2. 执行套件中的测试
  3. 当一个或多个测试失败时,套件执行将停止并将构建标记为失败

现在,当修复失败的测试并最终运行构建时,步骤1(如上所述)失败并显示端口已在使用中的消息。另外,我正在使用forkEvery参数,这意味着之前的测试可能运行了多个 JVM。

当构建通过 gradle 失败时,有什么方法可以清理所有内容(就进程而不是物理文件而言)?

4

1 回答 1

0

您可以添加一个自定义TestListener来停止 (1) 中的进程/服务器

您可以参考 Spring Boot 的FailureRecordingTestListenerhttps://github.com/spring-projects/spring-boot/blob/master/buildSrc/src/main/java/org/springframework/boot/build/testing/TestFailuresPlugin.java#L57。 .L95

这里的基本思想是,在该afterSuite方法中,您将停止从 (1) 开始/创建的任何进程。尽管在 中TestListener,您无权访问从 (1) 启动进程的测试实例。因此,您需要弄清楚如何在不引用可能定义了某些内容的原始类的情况下停止这些进程。

于 2020-03-04T12:45:07.520 回答