2016-06-30 13 views
6

build.gradleJak przekazać właściwości systemu do testów w gradle w inteligentny sposób?

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

Teraz mogę albo przekazać parametry w wierszu poleceń:

gradle test -Dparam=10 

lub umieścić je w gradle.properties:

systemProp.param=15 

Idealnie Chciałbym ustawić domyślne wartości w gradle.properties, i być w stanie zastąpić je z wiersza poleceń. Niestety, jeśli to zrobię, właściwość gradle.properties ma pierwszeństwo, a -Dparam=10 jest ignorowana.

Czy możesz zaoferować jakieś rozwiązania w tej sprawie?

+1

https://discuss.gradle.org/t/can-props-from-gradle-properties-be-overwritten-with-d-parameter/6759/6 Wygląda na to, że właściwości systemowe zdefiniowane w gradle.properties nie mogą obecnie być nadpisane przy użyciu -D – tomasulo

+0

dziękuję, aktualizowanie wrapper gradle do najnowszego, rozwiązany problem. –

Odpowiedz

0

używam Gradle 2.12 i dzielących jak użyłem go:

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

mam Testy JUnit, które chciałem pominąć, o ile nie użyto właściwości do włączenia takich testów. Korzystanie JUnit Załóżmy na tym testy warunkowo:

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

Robi to z Gradle wymagane, że właściwość systemu przewidziane w czasie prowadzenia Gradle build, pokazany tutaj,

gradle build -Ddeep.test.run=true 

rzeczywiście przepuszcza do testy.

Mam nadzieję, że pomoże to innym osobom wypróbować to podejście do wykonywania testów warunkowo.