6

Mam aplikację dla systemu Android z dwiema warstwami biblioteki pod nią. Każda biblioteka ma swój własny kod testowy. Chciałbym, aby kod testowy górnej biblioteki rozszerzył kod testowy niższej biblioteki, ale nie mogę wymyślić, jak uzyskać Gradle, aby znaleźć kod testowy niższej biblioteki (znajduje tylko kod produkcyjny).Jak uzyskać Gradle dla Androida, aby znaleźć kod testowy biblioteki z poziomu innego kodu testowego?

Moja struktura pliku wygląda następująco:

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 

Plik Gradle dla aplikacji wygląda następująco:

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

Plik Gradle dla LIB2 wygląda następująco:

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

The plik gradle dla biblioteki lib1 wygląda następująco:

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

Kiedy uruchamiam „Gradle connectedCheck” mam to:

... 
: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; 

Próbowałem dodawanie różnych androidTestCompile linie do sekcji zależnościach Gradle plik LIB2, ale żaden z nich nie pomoże.

Ktoś wie jak to zrobić?

EDIT: Niestety, nie wspominając, że ja też mam settings.gradle w folderze myproject, który wygląda tak:

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

Odpowiedz

1

Problem jest to, że Gradle nie wie połączeń MojaApl , moduły lib1 i lib2.

Spróbuj dodać niektóre settings.gradle w modułach, które używają innego. Na swojej strukturze polecam zrobić dodatkowe pliki Gradle w root:

na przykład w myproject/

settings.gradle:

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

a następnie napisać gradle.build dla wszystkich modułów, gdzie wyjaśnienia typ całego projektu, na przykład uszu itp.

Modułów można również podłączyć osobno.

+0

Dziękuję. Zmieniłem moje pytanie, aby dodać mój plik settings.gradle, który zawiera moduły, chociaż nie określam nazwy projektu. Czy to ważne? Ponadto nie rozumiem, co masz na myśli, mówiąc o rodzaju projektu i sposobie łączenia modułów. Obecnie jedynymi połączeniami są odwołania do modułów bibliotecznych w instrukcjach kompilacji. – Bruce

+0

wyjaśnienie typu projektu <- sry guy Zapomniałem, że mówisz o projekcie Android, powiedział, że w kontekście java, lub aplikacji Java EE (na przykład typ EAR, WAR itp., Ale to nie ma zastosowania Q- tacja). spróbuj dodać w każdym ustawieniu gradle modułu, a tam ustawić zależność - na przykład - na włączenie "lib2" w mojej aplikacji – SuperAndrew