2015-08-31 6 views
7

Ich habe ein Projekt, das Robolectric für Unit-Test-Zweck verwendet. Dieses Projekt verwendet Robolectric 3.0 und muss -ea und -noverify Optionen in Virtual Machine-Optionen hinzufügen. In Android Studio habe ich eine neue JUnit-Konfiguration in Run > Edit Configurations... erstellt und dann VM Options auf -ea -noverify gesetzt. Auf diese Weise konnte ich meinen Unit Test erfolgreich durchführen. Dies ist Bild über meine configure, sieht HereJVM-Optionen in Android, wenn Sie Gradlew Test

jedoch für die kontinuierliche Bereitstellung, ich muß mit der Kommandozeile aus Unit-Test. Also verwende ich ./gradlew test, um Unit-Test zu starten. Ich füge auch org.gradle.jvmargs=-ea -noverify zu gradle.properties Datei hinzu. Leider funktioniert es nicht. Ich kann Komponententest ausführen, aber ich habe java.lang.VerifyError und ich denke, dass gradle.properties nicht geladen wurde.

Also, meine Frage ist, wie gradle.properties Last zu machen, oder wissen Sie jede mögliche Weise meine vm Optionen Problem zu beheben?

Antwort

7

fand ich, dass wir diesen Block hinzufügen können, um App-build.gradle dieses Problem Variante

tasks.whenTaskAdded { theTask -> 
    def taskName = theTask.name.toString() 
    if ("testDevDebug".toString().equals(taskName)) { 
     theTask.jvmArgs('-ea', '-noverify') 
    } 
} 

DevDebug ist mein Build zu lösen.

+0

dies funktioniert auf dem neuesten Android Studio 2.3.3 –

0

Vielleicht

./gradlew -Dorg.gradle.jvmargs="-ea -noverify" test 
+0

Ich habe es vorher versucht, aber immer noch die java.lang.verifyError. –

16

Es ist bereits beantwortet, aber dies kann eine einfachere Lösung sein:

In Ihrem build.gradle Datei Anwendungsmodule in Android-Verschluss, fügen Sie diese.

android { 
    .... 

    testOptions { 
    unitTests.all { 
     jvmArgs '-noverify' 
    } 
    } 
} 
+1

Dieser ist so viel sauberer. "gradle way" –

+3

Hat jemand Erfahrung damit gehabt, mit Android Studio 2.3 zu arbeiten? Ich sehe immer noch, dass Tests sogar mit dieser Stelle abstürzen. –

+0

Dies funktioniert nicht auf 2.3.3. die angenommene Antwort funktioniert gut –