Столкнувшись с задачей параллельного запуска тестов при помощи surefire плагина, я полез читать офицаильную документацию (и зря). Написана она немного сумбурно, наверное из-за немного сумбурного развития этой фичи. Давай попробуем разобраться вместе.
Первый параметр, с которым тебе предстоит определиться - parallel
. Тут surefire предлагает гору вариантов, половина из которых бесполезна:
methods
- тут всё понятноclasses
- тоже окboth
- 1+2, но уже deprecatedsuites
- кто-то пользуется сьютами в junit/testng?- дальше начинается ад с перестановкой предыдущих вариантов:
suitesAndClasses
,suitesAndMethods
,classesAndMethods
(повезло им что всего три сущности) all
- заверните всё, пожалуйста
В реальной жизни нужны лишь два с половиной сценария. Если тесты независимы и ресурсы неограниченны - выбираем вариант all
. Или тесты независимы, но ограничены каким-либо общим ресурсом. Тогда, в зависимости от того, как написаны тесты, выбираем methods
или classes
. Любые другие вариант не гарантируют тебе одинакового количества одновременно выполняемых тестов от запуска к запуску, но гарантируют головняк при их конфигурации. Лично я не очень люблю, когда я не контролирую выполнение моих тестов :).
Дальше выставляй параметр useUnlimitedThreads=true
. Использовать неограниченно число тредов - звучит довольно страшно, но это всё враки, реальное число тредов регулируется другими параметрами. В зависимости от того, какой способ параллелизации ты выбрал - all
/classes
/methods
, выставляй один из трёх - threadCount
/threadCountClasses
/threadCountMethods
.