如何通过Kotlin DSL将系统属性传递给Gradle测试

时间:2019-08-01 08:37:04

标签: gradle gradle-kotlin-dsl

我正在尝试将系统属性传递给我的gradle测试。使用标准gradle,我会使用

test {
    //... Other configurations ...
    systemProperties = System.properties
} 

使用kotlin DSL时,它将无法运行:

tasks.withType<Test> {
    useJUnitPlatform()
    options {
        systemProperties(System.getProperties())
    }
}

问题在于属性为HashTable,预期类型为Map<String, String>

现在,我使用以下解决方法:

tasks.withType<Test> {
    useJUnitPlatform()
    val props = mutableMapOf<String, String>()
    System.getProperties().forEach {
        val key = it.key
        val value = it.value

        if (key is String && value is String) {
            props[key] = value
        }
    }
    options {
        systemProperties(props)
    }
}

有任何线索吗?谢谢。

1 个答案:

答案 0 :(得分:0)

这对我有用:

systemProperties = System.getProperties().map { e -> Pair(e.key as String, e.value) }.toMap()

要传递单个系统属性:

systemProperty("property.name", System.getProperty("property.name"))