【问题标题】:Gradle : Cleanup resources after build failureGradle:构建失败后清理资源
【发布时间】:2020-03-04 11:21:51
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: gradle integration-testing gradlew gradle-daemon


    【解决方案1】:

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

    可以参考Spring Boot的FailureRecordingTestListener:https://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) 启动进程的测试实例。因此,您需要弄清楚如何在不引用可能定义了某些内容的原始类的情况下停止这些进程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      • 2022-10-13
      • 1970-01-01
      • 2015-08-22
      相关资源
      最近更新 更多