5

Ich habe meine Modulabhängigkeiten wie so in meiner build.gradle-Datei:Wie behalte ich meine Android-Testbibliotheken getrennt von meinen Anwendungsbibliotheken in Android Studio?

dependencies 
{ 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:support-v4:22.2.0' 
    androidTestCompile fileTree(dir: 'libs/test', include: ['*.jar']) 
} 

Inside my libs Ordner ich alle Bibliotheken für den Aufbau meiner Anwendung notwendig sind. Ich legte die Bibliotheken für die laufenden Tests in einem Unterordner namens "test"

Dies scheint zu arbeiten, wie mein Code kompiliert, und ich kann mein Modul machen. Wenn ich versuche, einen meiner Tests auszuführen, findet er jedoch nicht die Testbibliotheken, die ich hinzufügen wollte. Die Fehler in der Gradle-Konsole verweisen tatsächlich auf Teile meines Codes, die keine Fehler anzeigen.

Auch ich habe meine Tests richtig eingerichtet ist, weil ich sie bekommen kann, indem die benötigten Gläser in den libs Ordner und die Änderung meiner Abhängigkeiten laufen:

dependencies 
{ 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:support-v4:22.2.0' 
} 

Aber dann nicht ich sehe den Punkt von androidTestCompile wirklich, wenn es nicht funktioniert. Ich würde diese JAR-Dateien auch lieber nicht in meine APK aufnehmen, wenn ich nicht müsste.

Wenn es hilft, verwende ich Android Studio Version 1.2.2 und Gradle Plugin Version 1.2.3.

Vielen Dank im Voraus für jede Hilfe.

+0

Sie Unit-Tests ausführen oder Android-Tests verbunden (jene, die ein Android-Gerät oder Emulator erfordern)? –

+0

Was ist die Importanweisung, die Sie verwenden, um auf die Testgläser zu verweisen? – therobotichumanoid

+0

Ich verwende verbundene Android-Tests. Einer der Importe in meinem Testcode sieht aus wie "import com.robotium.solo.Solo;" und die Robotium JAR-Datei befindet sich im Verzeichnis libs/test. –

Antwort

5

Siehe untenstehendes Beispiel.

erstellen Tests Ordner parallel zu src Ordner. erstellen Sie alle Testfälle in diesem Ordner. , wenn Sie Ordner in einen anderen Pfad erstellen Sie Aufruf für diese vornehmen müssen. (Hinzugefügt in Code.)

dependencies { 
    androidTestCompile files('libs/dexmaker-1.1.jar') 
    androidTestCompile files('libs/org.mockito:mockito-core:3.9.5') 
    androidTestompile files('espresso-1.0-SNAPSHOT-bundled.jar') 
    } 

defaultConfig { 

    testApplicationId "xxx.xx.abc" 
    testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner" 

} 

sourceSets { 
    main { 
     manifest.srcFile 'AndroidManifest.xml' 
     java.srcDirs = ['src'] 

    } 

    // Move the tests to tests/java, tests/res, etc... 
    instrumentTest.setRoot('tests') 

    instrumentTest { 

     java.srcDirs = ['tests/src'] 

    } 

    androidTest.setRoot('tests') 
    androidTest.java.srcDirs = ['tests/src'] 
+0

Danke! Ich denke, mein Problem war, dass ich die Standardkonfiguration von AndroidTest in src/androidTest hatte, aber ich hatte mein Quellverzeichnis als nur 'src'. Ich gehe davon aus, dass dort ein Konflikt stattgefunden haben muss. Dies schien es zu beheben. –

1

sollten Sie sourceSets verwenden Ihre apk frei von dem Test librarys Gradle User Guide Verwenden Sie den ‚main‘ für Ihre Produktion Code zu halten und die einem ‚androidTest‘ für die Tests, gradle fügt dann automatisch die angegebenen Quellen.

sourceSets { 
     main { 
      ... 
     } 
     androidTest { 
      ... 
     } 
    } 
+0

Muss ich meine apk außerhalb von Android Studio bauen, um diese noch getrennt zu halten? Es sieht so aus, als wenn ich meine Debug-Apk lade lädt es immer noch die Test-Bibliotheken. Danke für die Hilfe bis jetzt. –

Verwandte Themen