6

Ho un'applicazione Android con due livelli di libreria al di sotto. Ogni libreria ha il proprio codice di test. Vorrei che il codice di test della libreria superiore estendesse il codice di test della libreria inferiore, ma non riesco a capire come ottenere Gradle per trovare il codice di test della libreria inferiore (trova solo il codice di produzione).Come faccio a ottenere Gradle per Android per trovare il codice di test di una biblioteca da un altro codice di test?

mia struttura dei file si presenta così:

myproject/ 
+ myapp/ 
    + src/ 
    + main/ 
     + java 
     + com/myapp 
+ lib1/ 
    + src/ 
    + main/ 
     + java 
     + com/myapp/lib1 
    + androidTest 
     + java 
     + com/myapp/lib1/test 
+ lib2/ 
    + src/ 
    + main/ 
     + java 
     + com/myapp/lib2 
    + androidTest 
     + java 
     + com/myapp/lib2/test 

Il file Gradle per l'applicazione si presenta come:

apply plugin: 'com.android.application' 
android { ... } 
dependencies { 
    compile project(':lib2') 
} 

Il file Gradle per lib2 assomiglia:

apply plugin: 'com.android.library' 
android { ... } 
dependencies { 
    compile project(':lib1') 
} 

Il il file gradle per lib1 assomiglia a:

apply plugin: 'com.android.library' 
android { ... } 

Quando eseguo “Gradle connectedCheck” ottengo questo:

... 
:lib2:generateDebugTestSources UP-TO-DATE 
:lib2:compileDebugTestJava 
myproject/lib2/src/androidTest/java/com/myapp/lib2/test/SubClass.java:10: error: package com.myapp.lib1.test does not exist 
import com.myapp.lib1.test.BaseClass; 

Ho provato ad aggiungere varie linee androidTestCompile alla sezione dipendenze di file di Gradle di lib2, ma nessuno di loro d'aiuto.

Qualcuno sa come farlo funzionare?

EDIT: dispiace, non ho menzionato che ho anche un settings.gradle nella cartella myproject che assomiglia a questo:

include ':lib1' 
include ':lib2' 
include ':myapp' 

risposta

1

Il problema è che il vostro Gradle non conosce le connessioni di myapp , moduli lib1 e lib2.

Provare ad aggiungere alcune impostazioni.le in moduli che ne utilizzano un altro. Per la vostra struttura vi consiglio per rendere i file Gradle aggiuntivi in ​​radice:

per esempio in myproject/

settings.gradle:

rootProject.name = 'myproject' 
include 'myapp' 
include 'lib1' 
include 'lib2' 

e poi scrivere gradle.build per tutti i moduli in cui a chiarire il tipo di tutti i progetti, ad esempio orecchio ecc.

È anche possibile collegare i moduli separatamente.

+0

Grazie. Ho modificato la mia domanda per aggiungere il mio settings.gradle, che include anche i moduli, anche se non sto specificando il nome del progetto. È importante? Inoltre, non capisco cosa intendi nel chiarire il tipo di progetto e come connetterei i moduli. Attualmente le uniche connessioni sono i riferimenti ai moduli di libreria nelle istruzioni di compilazione. – Bruce

+0

chiarendo il tipo di progetto <- sry guy ho dimenticato che stai parlando di un progetto Android, un detto che nel contesto dell'applicazione java o java EE (ad esempio, il tipo è EAR, WAR ecc., Ma non applica il tuo Q- zione). prova ad aggiungere in ogni impostazione gradle di ogni modulo, e lì imposta la dipendenza - per esempio - su include 'lib2' nella mia app – SuperAndrew

Problemi correlati