我通过Gradle执行测试套件以进行构建,它在不同的端口上启动了许多进程。另外,我的测试任务将failFast
设置为true
。因此,执行我的套件时会发生以下情况:
现在,如果修复了失败的测试并最终运行了构建,则步骤1
(如上所述)将失败,并显示以下消息:端口已被使用。另外,我正在使用forkEvery
参数,这意味着先前的测试可能正在运行多个JVM。
当构建通过gradle失败时,是否有任何方法可以清理所有内容(就进程而不是物理文件而言)?
答案 0 :(得分:0)
您可以添加自定义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)开始进程的测试实例。因此,您需要弄清楚如何在不引用可能定义了某些东西的原始类的情况下停止这些进程。