У меня есть приложение Java, которое использует Gradle в качестве системы сборки. Это многопроектная сборка (несколько Java-проектов).
Когда я запускаю gradlew test и некоторые тесты терпят неудачу, я заметил, что не все тесты выполняются на самом деле.
Если я добавлю следующий код в build.gradle, он выполнит все тесты, но, конечно, сборка всегда завершается успешно:
test {
ignoreFailures = true
}
У меня два вопроса:




Убедитесь, что вы запускаете тесты из корня вашего проекта.
Задача test является частью подключаемого модуля Java для Gradle. Согласно официальной документации:
Выполнение проектов с большими наборами тестов может занять много времени, даже если сбой произошел на ранней стадии, что привело к ненужному времени ожидания (особенно в CI). Чтобы сократить такое поведение, свойство Test.getFailFast () позволяет вызвать сбой тестовой задачи после первого сбоя теста вместо выполнения всех тестов. Если это свойство истинно, в результирующих выходных данных будут показаны только результаты тестов, которые завершились до сбоя включительно. Чтобы включить эту функцию быстрого сбоя в файле сборки, установите для свойства failFast значение true:
test {
failFast = true
}
Параметр командной строки --fail-fast включает поведение из командной строки. Вызов выглядит так:
gradle test --fail-fast
Значение по умолчанию для свойства failFast - false.
Официальную документацию можно найти здесь.
Итак, чтобы ответить на ваши вопросы:
По умолчанию Gradle не прекращает выполнение тестов после первого сбоя. Это поведение можно изменить с помощью свойства failFast.
Поведение по умолчанию должно помочь. При запуске gradle test будут запущены все тесты. Если какой-либо из них выйдет из строя, сборка не удастся. Поскольку у вас многопроектная сборка, убедитесь, что вы запускаете Gradle из корневого проекта.
@IdoRan, пожалуйста, дайте нам знать, в чем проблема (как только вы ее решите). Кроме того, вы можете принять этот ответ, если он ответил на все ваши вопросы.
Gradle предлагает параметр --continue gradlew build --continue, который выполняет все задачи независимо от их успеха. Однако, если какая-либо выполненная задача не удалась, вся сборка помечается как неудачная.
Я думаю, вы ищете этот переключатель.
Я запускаю его из корневого проекта. Это проект с закрытым исходным кодом, поэтому я не могу показать код, но уверен, что количество выполняемых задач другое. Я попробую ваши предложения. Спасибо