2013-08-20 28 views
7

Przeprowadzam mój projekt na Androida, aby stopniowo tworzyć system i nie mogę zaimportować projektu Androida z projektu Integration Test Android.Utwórz testowanie apk systemu Android przy użyciu systemu gradle build

Używam konfiguracji wielu projektów z kilkoma bibliotekami Androida i działa świetnie, ale mam problem z konfiguracją mojego projektu testowego z wieloma ustawieniami projektu. Z przyczyn zewnętrznych muszę nadal używać tej struktury.

MyProject/ 
| settings.gradle 
+ MyApp/ 
    | build.gradle 
    | src 
    | res 
    | libs 
+ Instrumentation-Tests/ 
    | build.gradle 
    | src 
    | res 
    | libs 

moje aktualne pliki konfiguracyjne wyglądać następująco:

settings.gradle:

include ':MyApp', 'Instrumentation-Tests' 

MyAppp/build.gradle:

apply plugin: 'android' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile files('.....jar') 
    compile project('....') 
    compile 'com.android.support:support-v4:13.0.+' 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 11 
     targetSdkVersion 16 
    } 

    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 

    } 
} 

I wreszcie mój Instrumentation-Tests/build.gradle:

apply plugin: 'android' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile project(':MyApp') 
    compile files('.....jar') 
    compile 'com.android.support:support-v4:13.0.+' 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 11 
     targetSdkVersion 16 
    } 

    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 
    } 
} 

Po uruchomieniu gradle compileDebug projekt MyApp jest kompilowany poprawnie (i wszystkie jego moduły), ale kompilacja Instrumentation-Tests kończy się niepowodzeniem, ponieważ nie może znaleźć klas Android zdefiniowanych w MyApp.

Czytałem dokumentację i wiele postów, ale nie mogłem zrobić to praca, ja również próbowałem przy użyciu:

compile(project(':MyApp')) { transitive = true } 

podczas deklarowania zależność.

Czy ktoś miał ten sam problem? Chciałbym dołączyć dane wyjściowe zależności projektu MyApp do ścieżki klasy kompilacji , ale nie wiem, czy jest to możliwe przy użyciu wtyczki Android gradle.

+0

Czy czytasz na takie rzeczy: http://stackoverflow.com/questions/16586409/how-can-i-create-tests-in-android-studio i to: http://tools.android. com/tech-docs/new-build-system/user-guide # Testowanie TOC? Zastanawiam się, czy postępowałeś zgodnie z tymi instrukcjami, ale zmieniłeś lokalizację zestawów źródłowych, jeśli działałoby to z twoją obecną konfiguracją. Prawdopodobnie musisz określić katalogi źródeł testowych względem katalogu głównego projektu. – jDutton

+0

Skończyło się na tym, że przeniosłem wszystko do struktury gradle, również przeniosłem wszystkie moje testy instrumentacyjne (jednostka i funkcjonalność) do folderu InstrumentationTest i wszystko działa! – David

Odpowiedz

1

To nie zadziała (od teraz), ponieważ można określać projekty bibliotek tylko jako zależności.

Więc na razie compile project(':MyApp')MojaApl powinien być projekt biblioteki Android z apply plugin: 'android-library' w to build.gradle. Co z pewnością nie ma sensu.

Aby mieć osobny projekt testowy, potrzebujesz czegoś innego (czego sam badam).

EDYCJA: W przypadku testowania z Gradle, użyj Ant do tego.

+0

Skończyło się na tym, że przeniosłem wszystko do struktury gradle, również przeniosłem wszystkie moje testy instrumentacyjne (jednostka i funkcjonalność) do folderu InstrumentationTest i wszystko działa! – David

Powiązane problemy