Gradle:构建失败后清理资源

时间:2020-03-04 11:21:51

标签: gradle integration-testing gradlew gradle-daemon

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

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

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

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

1 个答案:

答案 0 :(得分: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)开始进程的测试实例。因此,您需要弄清楚如何在不引用可能定义了某些东西的原始类的情况下停止这些进程。