Тесты интеграции Java работают медленно из-за запуска сервера отдельно для каждого класса - PullRequest
0 голосов
/ 18 декабря 2018

У нас есть приложение Spring Boot, и у нас есть интеграционные тесты с использованием JUnit 4 и RestAssured Framework.

В нашем проекте много классов, связанных с тестами.

Наши интеграционные тесты требуют много временивремя для локального запуска, потому что каждый класс загружается и приносит сервер - который запускает тесты в классе, а затем завершает работу сервера.

Это происходит для каждого класса.

Запуск сервера и его уничтожение каждый раз занимает много времени - что делает выполнение всех тестов вместе очень медленным.

Я бы хотел, чтобы сервер запускался локально только один раз - ивсе тесты, которые нужно запустить против него.

Так что в основном мой вариант использования - это когда я пытаюсь запустить все тесты одновременно.

Заранее спасибо

С наилучшими пожеланиями

1 Ответ

0 голосов
/ 04 августа 2019

Интеграционные тесты обычно медленные.Но для сохранения независимости теста не всегда можно перенести подготовку и очистку теста за пределы теста.

Как насчет того, чтобы тесты выполнялись параллельно?См. для Gradle .Я думаю, что это может быть сделано и в Maven.

Да, это обычно создает новый набор проблем, таких как проверка того, что тесты, которые выполняются одновременно, не влияют друг на друга.Обычно используемые порты должны быть конкретными для тестирования, обычно предоставление 0 подразумевает: найти свободный порт.Во время теста можно извлечь фактически используемый порт.

Таким образом, общее ускорение может быть лучше при сохранении независимости тестирования.

...