Как передать системные свойства тестам в gradle умным способом?
построить.Gradle в
tasks.withType(Test){
systemProperties=System.properties
println systemProperties['param']
}
теперь я могу либо передать параметры в командной строке:
gradle test -Dparam=10
или положить их в gradle.свойства:
systemProp.param=15
в идеале я хотел бы поставить по умолчанию в gradle.свойства, и сможете перезаписать их из командной строки. К сожалению, если я это сделаю, то градля.свойства имеют приоритет, и -Dparam=10
игнорируется.
не могли бы вы предложить какие-либо решения по этому вопросу?
2 ответов
https://issues.gradle.org/browse/GRADLE-2122
Он работает с 2.12 или 2.13 "умный способ" уже!
пример выше работает, опция командной строки-D перегружает значения по умолчанию в gradle.свойства
Я использую gradle 2.12 и делюсь тем, как я его использовал:
test {
// support passing -Dsystem.property=value to bootRun task
systemProperties = System.properties
}
у меня есть тесты JUnit, которые я хотел пропустить, если свойство не было использовано для включения таких тестов. Использование JUnit предполагает включение тестов условно:
//first line of test
assumeThat(Boolean.parseBoolean(System.getProperty("deep.test.run","false"),true)
выполнение этого с gradle требовало, чтобы системное свойство, предоставленное во время выполнения сборки gradle, показанное здесь,
gradle build -Ddeep.test.run=true
действительно прошел через испытания.
надеюсь, это поможет другим попробовать этот подход для выполнения тестов условно.