2016-06-30 11 views
6

build.gradleWie man die Systemeigenschaften intelligent an die Tests weitergibt?

tasks.withType(Test){ 
    systemProperties=System.properties 
    println systemProperties['param'] 
} 

Jetzt kann ich entweder Parameter in der Befehlszeile übergeben:

gradle test -Dparam=10 

oder steckte sie in gradle.properties:

systemProp.param=15 

Idealer Ich möchte die Standardeinstellungen in setzen grandle.properties, und in der Lage sein, sie über die Befehlszeile zu überschreiben. Leider, wenn ich das tue, hat die gradle.properties Vorrang, und -Dparam=10 wird ignoriert.

Konnten Sie irgendwelche Lösungen auf diesem anbieten?

+1

https://discuss.gradle.org/t/can-props-from-gradle-properties-be- overwritten-with-d-parameter/6759/6 Es sieht so aus, als könnten System-Eigenschaften, die in "gradle.properties" definiert sind, derzeit nicht funktionieren überschrieben werden mit -D – tomasulo

+0

danke, update Gradle Wrapper auf die neueste, löste das Problem. –

Antwort

1

https://issues.gradle.org/browse/GRADLE-2122

Es seit 2.12 oder 2.13 "die intelligente Art und Weise" bereits funktioniert!

Das obige Beispiel funktioniert, die Befehlszeile Option -D übersteuert die Standardwerte in gradle.properties

0

I gradle 2.12 und teilen bin mit, wie ich es verwendet:

test { 
    // support passing -Dsystem.property=value to bootRun task 
    systemProperties = System.properties 
} 

Ich habe JUnit testet, dass ich überspringen wollte, es sei denn, eine Eigenschaft wurde verwendet, um solche Tests einzubeziehen. Mit JUnit Nehmen wir für die Tests einschließlich bedingt:

//first line of test 
assumeThat(Boolean.parseBoolean(System.getProperty("deep.test.run","false"),true) 

tun dies mit gradle erforderlich, dass die Systemeigenschaft zum Zeitpunkt der laufenden gradle Build zur Verfügung gestellt, hier gezeigt,

gradle build -Ddeep.test.run=true 

in der Tat bis zu den übergeben wurde Tests.

Hoffen, dass dies anderen hilft, diesen Ansatz für die Durchführung von Tests bedingt auszuprobieren.