Блок Gradle Run и интеграционные тесты параллельно для одного проекта на одной машине - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь сократить время, необходимое для запуска тестов с использованием gradle.Поскольку существует несколько проектов, я могу подумать о том, чтобы разделить тесты на модульные и интеграционные тесты.Для каждого проекта я создал две разные задачи: задачу unitTests и задачуgrationTests.

Предположим для упрощения, что мы всегда запускаем gradle build -x test перед запуском тестов.В таком сценарии я пытаюсь определить состояние, в котором я могу параллельно запускать задачи unitTests иgrationTests.

В настоящее время я видел сбои, когда одна из задач начинает компилировать проект, что приводит к сбою другой задачи.с ошибкой: «Не удается прочитать zip-файл», что, вероятно, связано с тем, что JAR, от которого зависит проект, теперь обновляется другим процессом.Это кажется вероятным, потому что у нас есть compileJava и compileTestJava как зависимые задачи, которые мешают зависимым проектам, приводящим к сбою.

Интересно, есть ли в gradle способ сделать следующее:

  1. Запускать только тесты и ничего не компилировать (под мелодию surefire: test in maven).
  2. Если нет, есть ли настройки, которые можно указать в build.gradle, чтобы сказать gradle не изменять файлы, а простозапускать тесты.

1 Ответ

0 голосов
/ 03 июля 2019

Gradle (пока) не поддерживает одновременное выполнение нескольких задач одного и того же проекта. Однако при выполнении тестов их можно запускать параллельно внутри заданного тестового задания.

При возникновении проблем, связанных с ошибками, которые могут быть вызваны изменением файлов во время выполнения других задач, убедитесь, что Gradle знает обо всех зависимостях между задачами, поскольку это будет наилучшим способом решения этих проблем.

Что касается уклонения от работы, Gradle оптимизирован для выполнения только необходимого минимума, включая задачи по проверке до даты, уклонение от компиляции и многое другое. Так что вызов test скомпилирует код только в том случае, если с момента последнего выполнения произошли изменения.

...