Откройте для себя простую, улучшенную конфигурацию PIT и JUnit 5 в Gradle (с gradle-pitest-plugin 1.4.7+).
JUnit 5, несомненно, становится все более популярным в наши дни. Несмотря на то, что есть специальный плагин для PIT для JUnit 5, и он поддерживается годами gradle-pitest-plugin, для этого требовалось добавить несколько строк стандартного кода. Недавно у меня появился [вопрос] (https://github.com/szpak/gradle-pitest-plugin/issues/177), можно ли его упростить. Мне нравится. Вызов принят :-).
Общий подход с ‘buildscript {}’
Сначала взглянем на общий подход с buildscrip {}
кода buildscrip {}
, который запоминает времена Gradle 0.x:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
buildscript { repositories { mavenCentral() gradlePluginPortal() //optionally, if any plugin is not available in Maven Central } configurations.maybeCreate( 'pitest' ) dependencies { classpath 'info.solidsoft.gradle.pitest:gradle-pitest-plugin:1.4.6' pitest 'org.pitest:pitest-junit5-plugin:0.12' } } apply plugin: 'java' apply plugin: 'info.solidsoft.pitest' pitest { testPlugin = 'junit5' } |
Всего 3 лишних строки. Приемлемо, однако buildscript {}
для конфигурации плагина сам по себе многословен.
Современный подход с помощью плагинов {}
(с более старым gradle-pitest-плагином)
Современный вариант с plugins {}
должен быть короче:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
buildscript { repositories { mavenCentral() } configurations.maybeCreate( 'pitest' ) dependencies { pitest 'org.pitest:pitest-junit5-plugin:0.12' } } plugins { id 'java' id 'info.solidsoft.pitest' version '1.4.6' } pitest { testPlugin = 'junit5' } |
К сожалению, компактный синтаксис блока plugin {}
теряется из-за необходимости добавления дополнительной зависимости pitest-junit5-plugin
используемой gradle-pitest-plugin
во время выполнения в buildscript {}
— на 10 строк больше. Очень разочаровывает ;-).
Современный улучшенный подход с ‘plugins {}’
и gradle-pitest-plugin 1.4.7+
С только что выпущенным gradle-pitest-plugin
1.4.7 мы можем забыть обо всем шаблоне кода:
1
2
3
4
5
6
7
8
9
|
plugins { id 'java' id 'info.solidsoft.pitest' version '1.4.7' } pitest { //adds dependency to org.pitest:pitest-junit5-plugin and sets "testPlugin" to "junit5" junit5PluginVersion = '0.12' } |
Всего одна строка junit5PluginVersion = '0.12'
которая под капотом добавляет pitest-junit5-plugin
в требуемые версии и активирует junit5
как testPlugin
используемый PIT. Разве это не выглядит красиво? 🙂
Резюме
В этом коротком посте в блоге я представил, как можно упростить настройку PIT, JUnit 5 и Gradle (-pitest-plugin) с помощью всего лишь нескольких изменений в самом плагине. Все благодаря вопросу Джона Скэнчеллы и идее, которая возникла у меня в голове, как реализовать это умным способом.
Поэтому я призываю вас сообщать (разумные) идеи относительно улучшений и вещей, которые ограничивают вас в проектах, которые вы используете (или, что еще лучше, запрос на извлечение / объединение после первоначального обсуждения с сопровождающим). Может быть, это будет реализовано (принято) для общего блага :-).
Смотрите оригинальную статью здесь: PIT, JUnit 5 и Gradle — только с одной дополнительной линией конфигурации Мнения, высказанные участниками Java Code Geeks, являются их собственными. |