Gradle вынести внутренности task в функцию

Всем привет! Пишу автотесты с использованием JUnit 5 и накопилось уже довольно много task в gradle, в которых есть одинаковые блоки.

task paramtests_server_valid(type: Test) {
    useJUnitPlatform()

    description "Тестирование на валидные значения"

    dependsOn 'cleanTest'

    systemProperties = [
            'junit.jupiter.execution.parallel.enabled':'true',
            'junit.jupiter.execution.parallel.config.strategy':'fixed',
            'junit.jupiter.execution.parallel.config.fixed.parallelism':'2',
            'junit.jupiter.execution.parallel.mode.default':'same_thread',
            'junit.jupiter.execution.parallel.mode.classes.default':'concurrent'
    ]

    //Parametrized Test
    include("**/TestParametersServerConnectValidPorts.class")
    include("**/TestParametersServerPushValidPort")


    testLogging {
        events "passed", "skipped", "failed"
    }

    finalizedBy(roschatserver)
}

task paramtests_mail_wrong(type: Test) {
    useJUnitPlatform()

    description "Тестирование раздела Почта на невалидные значения"

    dependsOn 'cleanTest'

    systemProperties = [
            'junit.jupiter.execution.parallel.enabled':'true',
            'junit.jupiter.execution.parallel.config.strategy':'fixed',
            'junit.jupiter.execution.parallel.config.fixed.parallelism':'4',
            'junit.jupiter.execution.parallel.mode.default':'same_thread',
            'junit.jupiter.execution.parallel.mode.classes.default':'concurrent'
    ]

    //Parametrized Test
    include("**/TestParametersMailEmptyValue.class")
    include("**/TestParametersMailMaxLengthPort.class")
    include("**/TestParametersMailWrongHostServer.class")
    include("**/TestParametersMailWrongMail.class")


    testLogging {
        events "passed", "skipped", "failed"
    }

    finalizedBy(paramtests_server_valid)
}

task paramtests_telephony_turn(type: Test){
    useJUnitPlatform()

    description "Тестирование раздела TURN/STUN на невалидные значения"

    dependsOn 'cleanTest'

    systemProperties = [
            'junit.jupiter.execution.parallel.enabled':'true',
            'junit.jupiter.execution.parallel.config.strategy':'fixed',
            'junit.jupiter.execution.parallel.config.fixed.parallelism':'3',
            'junit.jupiter.execution.parallel.mode.default':'same_thread',
            'junit.jupiter.execution.parallel.mode.classes.default':'concurrent'
    ]

    //Parametrized Test
    include("**/TestParametersTelephonyEmptyTurn.class")
    include("**/TestParametersTelephonyTurnWrongMinPort.class")
    include("**/TestParametersTelephonyTurnWrongMaxPort.class")

    testLogging {
        events "passed", "skipped", "failed"
    }

    finalizedBy(paramtests_mail_wrong)
}

task paramtests_telephony_sip(type: Test){
    useJUnitPlatform()

    description "Тестирование раздела SIP-сервер на невалидные значения"

    dependsOn 'cleanTest'

    systemProperties = [
            'junit.jupiter.execution.parallel.enabled':'true',
            'junit.jupiter.execution.parallel.config.strategy':'fixed',
            'junit.jupiter.execution.parallel.config.fixed.parallelism':'3',
            'junit.jupiter.execution.parallel.mode.default':'same_thread',
            'junit.jupiter.execution.parallel.mode.classes.default':'concurrent'
    ]

    //Parametrized Test
    include("**/TestParametersTelephonyEmptySip.class")
    include("**/TestParametersTelephonySipWrongMinPort.class")
    include("**/TestParametersTelephonySipWrongMaxPort.class")

    testLogging {
        events "passed", "skipped", "failed"
    }

    finalizedBy(paramtests_telephony_turn)
}

task paramtests_telephony_network(type: Test) {
    useJUnitPlatform()

    description "Тестирование раздела Сеть на невалидные значения"

    dependsOn 'cleanTest'

    systemProperties = [
            'junit.jupiter.execution.parallel.enabled':'true',
            'junit.jupiter.execution.parallel.config.strategy':'fixed',
            'junit.jupiter.execution.parallel.config.fixed.parallelism':'4',
            'junit.jupiter.execution.parallel.mode.default':'same_thread',
            'junit.jupiter.execution.parallel.mode.classes.default':'concurrent'
    ]

    //Parametrized Test
    include("**/TestParametersTelephonyEmptyNetwork.class")
    include("**/TestParametersTelephonyNetworkWrongFrontDev.class")
    include("**/TestParametersTelephonyNetworkWrongInsideDev.class")
    include("**/TestParametersTelephonyNetworkWrongPublicAddress.class")

    testLogging {
        events "passed", "skipped", "failed"
    }

    finalizedBy(paramtests_telephony_sip)
}

task paramtests_push_wrong(type: Test) {
    useJUnitPlatform()

    description "Тестирование раздела Лицензирование и обсуживание на невалидные значения"

    dependsOn 'cleanTest'

    systemProperties = [
            'junit.jupiter.execution.parallel.enabled':'true',
            'junit.jupiter.execution.parallel.config.strategy':'fixed',
            'junit.jupiter.execution.parallel.config.fixed.parallelism':'2',
            'junit.jupiter.execution.parallel.mode.default':'same_thread',
            'junit.jupiter.execution.parallel.mode.classes.default':'concurrent'
    ]

    //Parametrized Test
    include("**/TestParametersServerPushWrongHost.class")
    include("**/TestParametersServerPushWrongPort.class")

    testLogging {
        events "passed", "skipped", "failed"
    }

    finalizedBy(paramtests_telephony_network)
}

task paramtests_connect_wrong(type: Test) {
    useJUnitPlatform()

    description "Тестирование раздела Подключение на невалидные значения"

    dependsOn testuseradmin

    systemProperties = [
            'junit.jupiter.execution.parallel.enabled':'true',
            'junit.jupiter.execution.parallel.config.strategy':'fixed',
            'junit.jupiter.execution.parallel.config.fixed.parallelism':'4',
            'junit.jupiter.execution.parallel.mode.default':'same_thread',
            'junit.jupiter.execution.parallel.mode.classes.default':'concurrent'
    ]

    //Parametrized Test
    include("**/TestParametersServerConnectWrongHost.class")
    include("**/TestParametersServerConnectWrongHttpPort.class")
    include("**/TestParametersServerConnectWrongHttpsPort.class")
    include("**/TestParametersServerConnectWrongWebsocketPort.class")

    testLogging {
        events "passed", "skipped", "failed"
    }

    finalizedBy(paramtests_push_wrong)
}

Можно ли вынести вот эту часть кода

useJUnitPlatform()

    description "Тестирование раздела Подключение на невалидные значения"

    dependsOn testuseradmin

    systemProperties = [
            'junit.jupiter.execution.parallel.enabled':'true',
            'junit.jupiter.execution.parallel.config.strategy':'fixed',
            'junit.jupiter.execution.parallel.config.fixed.parallelism':'4',
            'junit.jupiter.execution.parallel.mode.default':'same_thread',
            'junit.jupiter.execution.parallel.mode.classes.default':'concurrent'
    ]

testLogging {
        events "passed", "skipped", "failed"
    }

в функцию и затем вызывать её в task?

используйте груви

вот пример из реального проекта

def isAppRun(healthCheckPath) {
    try {
        healthCheckPath.toURL().text
        true
    }
    catch (e) {
        false
    }
}
1 лайк
tasks.withType(Test) {
    useJUnitPlatform()
    systemProperties = [
            'junit.jupiter.execution.parallel.enabled':'true',
            'junit.jupiter.execution.parallel.config.strategy':'fixed',
            'junit.jupiter.execution.parallel.config.fixed.parallelism':'2',
            'junit.jupiter.execution.parallel.mode.default':'same_thread',
            'junit.jupiter.execution.parallel.mode.classes.default':'concurrent'
    ]
    testLogging {
        events "passed", "skipped", "failed"
    }
}

task paramtests_server_valid(type: Test) {
    useJUnitPlatform()

    description "Тестирование на валидные значения"

    dependsOn 'cleanTest'
}........................