2016-09-07 2 views
0

Wie kann ich gradle parameters in meinen JUnit Testfällen verwenden?Gradle pass SystemProperties zu JUnit test

Ich versuchte dies:

build.bradle:

test { 
    systemProperty 'brand', System.properties['brand'] ? project.brand : 'abc' 
} 

In meinem Test habe ich mit allen Eigenschaften displayd:

System.properties.each { k,v-> 
    log.info("$k = $v") 
} 

Mit diesem Code habe ich eine Menge von Eigenschaften erhalten, mit der Ausnahme für brand.

Gibt es eine andere Möglichkeit, Marke in meinen Test zu bringen?

// Ich weiß nicht, ob es wichtig ist, aber ich verwende auch Gebish oder besser Selenium für meine Tests.

Antwort

1

Sie wissen nicht, warum systemProperty mit funktioniert nicht in der test Konfiguration, aber für dieses Problem zu umgehen können Sie einstellen, die systemProperties Variable wie:

test { 
    System.properties.'brand' = System.properties['brand'] ? project.brand : 'abc' 
    systemProperties = System.properties 
} 

Oder wenn Sie nicht System.properties ändern wollen können Sie set systemProperties wie

test { 
    systemProperties = System.properties + ['brand1': System.properties['brand'] ? project.brand : 'abc'] 

}

+0

jUnit verwendet für jeden Test eine neue JVM. Gebisch irgendwie auch. Deine Idee funktioniert nicht. Aber ich habe einen hässlichen Workaround. In meiner build.gradle habe ich 'systemProperty'-Marke", project.hasProperty ("Marke")? project.brand: "abc" 'in der Testaufgabe. In meiner GebConfig.groovy habe ich 'brand = System.getProperty (" brand ")? System.getProperty ("Marke"): "abc" '(hier wieder abc, weil Intellij die Aufgabe nicht richtig ausführt) und in meinem Test habe ich' def brand = browser.config.getRawConfig(). GetProperty ("brand ") .toString()'. Nahm mich über 4 Stunden, um so zu finden –

+0

die SystemProperties sollten die System.properties in der neuen JVM setzen In den Geb und Junit Tests mache ich die oben. Sind Sie sicher, dass Sie die Variable systemProperties gesetzt haben? –

+0

Ja bin ich mir sicher. Ich habe es gerade noch einmal ausprobiert und System.properties (in einem Test) hatte keinen Markenschlüssel. –

0

Meine Lösung ist jetzt:

build.gradle (in der Testaufgabe):

systemProperty "brand", project.hasProperty("brand") ? project.brand : "abc" 

GebConfig.groovy:

brand = System.getProperty("brand") ? System.getProperty("brand") : "abc" 

hier abc wieder, weil IntelliJ die Aufgabe nicht richtig laufen, aber es funktioniert durch die Befehlszeile

im Test selbst:

def brand = browser.config.getRawConfig().getProperty("brand").toString(‌​)