Параллельный запуск тестов в maven-surefire

Параллельный запуск тестов в maven-surefire

Столкнувшись с задачей параллельного запуска тестов при помощи surefire плагина, я полез читать офицаильную документацию (и зря). Написана она немного сумбурно, наверное из-за немного сумбурного развития этой фичи. Давай попробуем разобраться вместе.

Первый параметр, с которым тебе предстоит определиться - parallel. Тут surefire предлагает гору вариантов, половина из которых бесполезна:

  1. methods - тут всё понятно
  2. classes - тоже ок
  3. both - 1+2, но уже deprecated
  4. suites - кто-то пользуется сьютами в junit/testng?
  5. дальше начинается ад с перестановкой предыдущих вариантов: suitesAndClasses, suitesAndMethods, classesAndMethods (повезло им что всего три сущности)
  6. all - заверните всё, пожалуйста

В реальной жизни нужны лишь два с половиной сценария. Если тесты независимы и ресурсы неограниченны - выбираем вариант all. Или тесты независимы, но ограничены каким-либо общим ресурсом. Тогда, в зависимости от того, как написаны тесты, выбираем methods или classes. Любые другие вариант не гарантируют тебе одинакового количества одновременно выполняемых тестов от запуска к запуску, но гарантируют головняк при их конфигурации. Лично я не очень люблю, когда я не контролирую выполнение моих тестов :).

Дальше выставляй параметр useUnlimitedThreads=true. Использовать неограниченно число тредов - звучит довольно страшно, но это всё враки, реальное число тредов регулируется другими параметрами. В зависимости от того, какой способ параллелизации ты выбрал - all/classes/methods, выставляй один из трёх - threadCount/threadCountClasses/threadCountMethods.

comments powered by Disqus