Статьи

PIT, JUnit 5 и Gradle — только с одной дополнительной линией конфигурации

Откройте для себя простую, улучшенную конфигурацию 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, являются их собственными.