当我在Gradle中运行测试时,我想传递一些属性:
./gradlew test -DmyProperty=someValue
因此,在我的Spock测试中,我将使用该值:
def value = System.getProperty("myProperty")
我正在使用kotlin gradle dsl。当我尝试使用本文档中的“ tasks.test”时: https://docs.gradle.org/current/userguide/java_testing.html#test_filtering
我的build.gradle.kts
文件中没有识别出'test'。
我假设我需要使用与下面的帖子中的答案类似的东西,但是尚不清楚在使用gradle kotlin DSL时应该如何做。
答案 0 :(得分:2)
您所链接问题的答案可以1:1转换为kotlin DSL。这是使用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"])
}
答案 1 :(得分:0)
此示例演示了将系统属性传递给junit测试的三种方式。其中两个一次指定一个系统属性。最后一种方法避免了必须通过获取gradle运行时可用的所有系统属性并将它们传递给junit测试工具来向前声明每个系统属性。
Activity