Как передать свойство System моему тесту с помощью Kotiln Gradle и -D - PullRequest
2 голосов
/ 17 июня 2019

Когда я запускаю тест в Gradle, я хотел бы передать некоторые свойства:

./gradlew test -DmyProperty=someValue

Поэтому в своем тесте Спока я буду использовать для получения значения:

def value = System.getProperty("myProperty")

Imиспользуя Kotlin Gradle DSL.Когда я пытаюсь использовать 'tasks.test', как в этой документации: https://docs.gradle.org/current/userguide/java_testing.html#test_filtering

'test' не распознается в моем файле build.gradle.kts.

Я предполагаю, что мне нужно будет использовать что-то похожее на ответ в посте ниже, но не ясно, как это должно быть сделано при использовании gradle kotlin DSL.

Как передать свойство System моему тесту через Gradle и -D

1 Ответ

2 голосов
/ 17 июня 2019

Ответы на ваш связанный вопрос переводятся 1: 1 на DSL kotlin.Вот полный пример использования junit5.

dependencies {
    ...
    testImplementation("org.junit.jupiter:junit-jupiter:5.4.2")
    testImplementation(kotlin("test-junit5"))
}

tasks.withType<Test> {
    useJUnitPlatform()

    // Project property style - optional property.
    // ./gradlew test -Pcassandra.ip=xx.xx.xx.xx
    systemProperty("cassandra.ip", project.properties["cassandra.ip"])

    // Project property style - enforced property.
    // The build will fail if the project property is not defined.
    // ./gradlew test -Pcassandra.ip=xx.xx.xx.xx
    systemProperty("cassandra.ip", project.property("cassandra.ip"))

    // system property style
    // ./gradlew test -Dcassandra.ip=xx.xx.xx.xx
    systemProperty("cassandra.ip", System.getProperty["cassandra.ip"])
}
...