2015-08-31 13 views
7

Ho un progetto che utilizza Robolectric per scopi di test unitario. Questo progetto utilizza Robolectric 3.0 e deve aggiungere le opzioni -ea e -noverify nelle opzioni di Macchina virtuale.Opzioni JVM in Android quando si esegue il test gradlew

In Android Studio, ho creato una nuova configurazione JUnit in Run > Edit Configurations... e quindi impostato VM Options su -ea -noverify. Con questo modo ho successo a far funzionare il mio test unitario. Questa è l'immagine della mia configurazione, vedi Here

Tuttavia, per la distribuzione continua, ho bisogno di eseguire il test dell'unità con la riga di comando. Quindi io uso ./gradlew test per eseguire unit test. Aggiungo anche il file org.gradle.jvmargs=-ea -noverify al file gradle.properties. Sfortunatamente, non funziona. Posso eseguire unit test ma ho ottenuto java.lang.VerifyError e penso che gradle.properties non sia stato caricato.

Quindi, la mia domanda è, come si fa a caricare gradle.properties o si conosce un modo per risolvere il problema delle mie opzioni vm?

risposta

7

ho scoperto che siamo in grado di aggiungere questo blocco app build.gradle per risolvere questo problema

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

DevDebug è la mia variante di compilazione.

+0

funziona su Android Studio 2.3.3 più recente. –

0

Forse questo

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

Ho provato prima, ma ho ancora java.lang.verifyError. –

16

E 'già una risposta, ma questo può essere una soluzione più semplice:

In build.gradle lima i moduli di un'applicazione in chiusura Android, aggiungere questo.

android { 
    .... 

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

Questo è molto più pulito. "gradle way" –

+3

Qualcuno ha avuto esperienza nell'ottenere questo funzionamento con Android Studio 2.3? Sto ancora vedendo crash di test anche con questo in atto. –

+0

questo non funziona su 2.3.3. la risposta accettata funziona alla grande –

Problemi correlati