Чем JUnit проще, и какие функции TestNG - нехорошие?
Когда-то TestNG был действительно круче - до тех пор, пока не появился JUnit 4 с аннотациями. Теперь у TestNG осталось всего парочка функций, которых нет у JUnit: это возможность настраивать порядок (зависимости) тестов и параметризированные тесты. Ну как бы один из основополагающих принципов автоматических тестов - они должны быть независимыми. Поэтому возможность задавать порядок в принципе вредна. А вот Gradle, кстати, намеренно запускает тесты в разном порядке.
Параметризированные тесты есть и в TestNG, и в JUnit (вроде бы в TestNG богаче возможности), но сама по себе эта возможность вредна в случае браузерных тестов. Ибо браузерных тестов по определению должно быть мало (по сравнению с юнит-тестами). Через браузер должны тестироваться только самые критичные дял бизнеса цепочки, а все остальные комбинации и частные случае - через юнит-тесты. А параметризированные тесты стимулируют обратное: миллион комбинаций через браузер. Что приводит к раздутому и крайне медленному набору тестов.
Или имеется ввиду то, что Selenide умеет хорошо это хэндлить?
Да, я имел в виду, что Selenide умеет хорошо это хэндлить. А хром тупо быстрее. Хотя, кстати, я это давно не проверял.
несколько примеров из реальной практики преимущества gradle над maven?
Ну, тут важно, что Maven - это геморрой. Куча проблем, неочевидных подводных камней. Огромных билд-файлы, нестабильные плагины. Тот самый мем, что “Мавен качает интернет” - это ж правда. Качает, ещё как качает.
Gradle быстр. Инкрементальная компиляция. Ацки гибкий билд-файл. Билд-файл пишется на груви, что означает, что ты не ограничен форматом XML или возможностями плагинов, а можешь писать любую логику. И ещё есть одна офигенная штука - “Gradle wrapper”. Благодаря этой штуке тебе необязательно инсталлировать Gradle. Просто запускаешь билд-скрипт - и он сам скачает Gradle при первом запуске.
Можно попробовать Gradle, например, на этом проекте: GitHub - selenide-examples/hangman: The hangman game written in Java
Делаешь “git clone GitHub - selenide-examples/hangman: The hangman game written in Java” и потом в этой папке “./gradle test”. Скачается Gradle, скомпилируется код, запустятся юнит-тесты. Быстро. При следующем запуске Gradle скажет, что всё “up-to-date”, то есть ничего не поменялось, и поэтому нечего компилировать. Красота.
Но у Gradle есть один минус. Если ты не близко знаком с синтаксисом Groovy, и тебе надо в билд-скипте сделать что-нибудь нетривиальное, и ты куда-нибудь не туда поставил скобочку, придётся сильно попотеть, пока поймёшь, в чём дело. Но это проблема общая для любых новых языков. Поддержка IDE постоянно развивается, так что я надеюсь, что эта проблема скоро решится.