Как передать системные свойства тестам в 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

действительно прошел через испытания.

надеюсь, это поможет другим попробовать этот подход для выполнения тестов условно.