Gradle: очистка ресурсов после сбоя сборки - PullRequest
0 голосов
/ 04 марта 2020

Я выполняю набор тестов через Gradle для сборки, и он раскручивает множество процессов на разных портах. Также для моего тестового задания failFast установлено на true. Итак, при выполнении моего комплекта происходит следующее:

  1. Комплект запускается и запускает процессы / серверы, прослушивающие разные порты
  2. Выполнены тесты в комплекте
  3. Если один или несколько тестов не пройдены, выполнение набора останавливается, и сборка помечается как неудачная

Теперь, когда неудачные тесты исправлены и сборка в конечном итоге запускается, шаг 1 (описано выше) выдает сообщение о том, что порт уже используется. Кроме того, я использую параметр forkEvery, то есть в предыдущих тестах может быть запущено несколько JVM.

Есть ли способ очистить все (с точки зрения процессов, а не физических файлов), когда сборка завершается неудачно через gradle?

1 Ответ

0 голосов
/ 04 марта 2020

Вы можете добавить пользовательский TestListener, который останавливает процессы / серверы из (1)

. Вы можете ссылаться на Spring Boot's FailureRecordingTestListener: https://github.com/spring-projects/spring-boot/blob/master/buildSrc/src/main/java/org/springframework/boot/build/testing/TestFailuresPlugin.java#L57 .. L95

Основная идея c заключается в том, что в методе afterSuite вы остановите все процессы, которые были запущены / созданы из (1). Хотя в TestListener у вас нет доступа к тестовому экземпляру, из которого были запущены процессы (1). Поэтому вам необходимо выяснить, как остановить эти процессы, не имея ссылки на исходный класс, где он мог бы определить некоторые вещи.

...