#java #multithreading #junit #parallel-processing
Вопрос:
Я изучал параллельное выполнение тестов Junit и понял, что, когда я запускаю свой тест, делая их параллельными, время их выполнения увеличивается. Синхронный запуск тестов занимает примерно 3 секунды:
После того, как я инициализировал junit.jupiter.execution.parallel.enabled = true
свой junit-platform.properties
файл, это заняло почти 6 секунд:
Может кто-нибудь объяснить мне, в чем тут дело?
Комментарии:
1. Есть ли у ваших тестов общие ресурсы?
2. Да, некоторые из них
3. Обычно при любом параллелизме возникают накладные расходы. То же самое с параллельными потоками. Параллелизм-это не серебряная пуля для ускорения работы. Выгода должна превышать затраты. Если ваши тесты занимают 3 секунды, я не вижу смысла пытаться сделать их быстрее.
4. Я просто пытаюсь понять различия. В каких ситуациях я должен использовать параллельное тестирование.
5. Это может быть полезно, например, для небольших тестов на основе алгоритмов с большим количеством входных вариаций. Если ваши тестовые наборы тяжелы (больше похожи на интеграцию), например, запуск приложения с полной загрузкой spring, я не думаю, что тесты parellel принесут вам пользу. Нет четкого разделения, которое можно было бы описать. Это должно решаться в каждом конкретном случае. Тем не менее, я сам никогда даже не пытался использовать параллельные тесты.