So führen Sie Komponententests mit Android Studio aus
Ich bin mit Jake Android unit-tests-plugin für gradle: https://github.com/JakeWharton/gradle-android-test-plugin
Meine bauen.gradle sieht wie folgt aus:
dependencies {
//analytics
compile('com.crittercism:crittercism-android:3.0.11')
//retrofit
compile('com.squareup.retrofit:retrofit:1.2.2')
compile('com.squareup.okhttp:okhttp:1.2.1')
//dagger
compile('com.squareup.dagger:dagger:1.1.0')
compile('com.squareup.dagger:dagger-compiler:1.1.0')
//compatibility
compile('android.compatibility:android-support:v4-r13')
compile('com.actionbarsherlock:actionbarsherlock:4.4.0@aar')
//Picasso
compile('com.squareup.picasso:picasso:2.1.1')
//Otto
compile('com.squareup:otto:1.3.4')
//Tests
testCompile 'junit:junit:4.10'
testCompile 'org.robolectric:robolectric:2.2'
testCompile 'org.powermock:powermock-api-mockito:1.5.1'
testCompile 'org.easytesting:fest-assert-core:2.0M10'
}
Leider bin ich nicht in der Lage zu laufen, alle oder bestimmte unit-test form Android Studio. Ich bin immer Fehler:
Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/ResultPrinter
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:171)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:113)
Caused by: java.lang.ClassNotFoundException: junit.textui.ResultPrinter
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 3 more
- Und dies ist korrekt, da laufen Befehlszeile nicht meine JUnit-Abhängigkeit:
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -ea -Didea.launcher.port=7533 "-Didea.launcher.bin.path=/Applications/Android Studio.app/bin" -Dfile.encoding=UTF-8 -classpath "/Applications/Android Studio.app/lib/idea_rt.jar:/Applications/Android Studio.app/plugins/junit/lib/junit-rt.jar:/Users/eugen/Development/SDK/android-sdk-macosx/platforms/android-18/android.jar:/Users/eugen/Development/SDK/android-sdk-macosx/platforms/android-18/data/res:/Users/eugen/Development/SDK/android-sdk-macosx/tools/support/annotations.jar:/Users/eugen/Development/Projects/eBuddy/xms/android/xms3-android/build/classes/alpha/debug:/Users/eugen/.gradle/caches/artifacts-26/filestore/com.squareup.retrofit/retrofit/1.2.2/jar/cdf7b60568092fbcc7a254371c345e92f733c03c/retrofit-1.2.2.jar:/Users/eugen/.gradle/caches/artifacts-26/filestore/com.google.code.gson/gson/2.2.4/jar/a60a5e993c98c864010053cb901b7eab25306568/gson-2.2.4.jar:/Users/eugen/.gradle/caches/artifacts-26/filestore/com.squareup.okhttp/okhttp/1.2.1/jar/c3562574496bb4d452d6fc45b817577e98d08afe/okhttp-1.2.1.jar:/Users/eugen/.gradle/caches/artifacts-26/filestore/com.squareup/javawriter/2.1.1/jar/67ff45d9ae02e583d0f9b3432a5ebbe05c30c966/javawriter-2.1.1.jar:/Users/eugen/.gradle/caches/artifacts-26/filestore/com.squareup.dagger/dagger/1.1.0/jar/49f2061c938987c8e56679a731d74fd8448d8742/dagger-1.1.0.jar:/Users/eugen/.gradle/caches/artifacts-26/filestore/com.squareup.picasso/picasso/2.1.1/jar/ab19bfb23f641f189b6dca9a4d393f8dc291103a/picasso-2.1.1.jar:/Users/eugen/.gradle/caches/artifacts-26/filestore/com.squareup/otto/1.3.4/jar/4d72fb811c7b3c0e7f412112020d4430f044e510/otto-1.3.4.jar:/Users/eugen/.gradle/caches/artifacts-26/filestore/com.squareup.dagger/dagger-compiler/1.1.0/jar/ddb38c2be31deeb7a001177f7c358665e350d646/dagger-compiler-1.1.0.jar:/Users/eugen/.gradle/caches/artifacts-26/filestore/javax.inject/javax.inject/1/jar/6975da39a7040257bd51d21a231b76c915872d38/javax.inject-1.jar:/Users/eugen/Development/Projects/eBuddy/xms/android/xms3-android/build/exploded-bundles/ComActionbarsherlockActionbarsherlock440.aar/res:/Users/eugen/Development/Projects/eBuddy/xms/android/xms3-android/build/exploded-bundles/ComActionbarsherlockActionbarsherlock440.aar/classes.jar:/Users/eugen/.gradle/caches/artifacts-26/filestore/com.squareup.okhttp/okhttp-protocols/1.2.1/jar/ec2beaefef3bd4f680c17fad8e72e66f2a006f1/okhttp-protocols-1.2.1.jar:/Users/eugen/.gradle/caches/artifacts-26/filestore/com.crittercism/crittercism-android/3.0.11/jar/e30c21ae491d780622ecaee2752969be98140c3/crittercism-android-3.0.11.jar:/Users/eugen/.gradle/caches/artifacts-26/filestore/android.compatibility/android-support/v4-r13/jar/bd6479f5dd592790607e0504e66e0f31c2b4d308/android-support-v4-r13.jar" com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 @/private/var/folders/wq/knhztnf105v2_p1t580tj8h80000gp/T/idea_junit701450667388095664.tmp @w@/private/var/folders/wq/knhztnf105v2_p1t580tj8h80000gp/T/idea_working_dirs_junit4927192380605663413.tmp -socket63849
Ich Frage mich, ob irgendjemand in der Lage war, um unit tests in Android Studio? Und wenn es möglich ist, wie machen Sie es?
InformationsquelleAutor der Frage Eugen Martynov | 2013-11-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
fügen Sie einfach Ordner mit dem Namen instrumentTest unter /src
es sollte haben /java-innen wie diese
dann erweitern Sie die Klasse ActivityTestCase (oder jedem anderen android unit-test-Klasse), wie
klicken Sie rechts auf grün java-Verzeichnis und wählen Sie " ausführen alle tests
und man sollte diese:
Glück
InformationsquelleAutor der Antwort zebra
Update für 1.1+, android-gradle-plugin 1.1+
Schließlich ist es möglich, ohne viele tricks. Hier ist Beispiel-Projekt, das zeigt, wie setup
Robolectric
test inAndroid Studio v1.1+
undandroid gradle plugin v1.1+
:https://github.com/nenick/AndroidStudioAndRobolectric
Können Sie auch finden es möglich, Problem-und übergangslösungen. Ja,
Robolectric
ist Komplex und nicht offiziell unterstützt von Google, so dass es immer noch einige Probleme hat. Aber die meisten der Zeit es funktioniert und bringt großen Mehrwert für Ihr Projekt.Möchte ich Sie auch ermutigen Sie zu verwenden zu beginnen
Robolectric v3+
. Es ist fast released und stabil genug.Alte Antwort für WIE 0.x und 1.0 x-und android-gradle-plugin-version unter 1.1
Schaffte ich es mit Hilfe von Freunden.
Also im Grunde müssen Sie weiter machen, Veränderungen zu führen Robolectric unit tests in Android Studio:
-classpath "<path_to_project_folder>/build/test-classes:<path_to_gradle_cache>/caches/modules-2/files-2.1/junit/junit/4.11/4e031bb61df09069aeb2bffb4019e7a5034a4ee0/junit-4.11.jar:<your old classpath>"
Als für mich der Anfang des neuen classpath sieht so aus:
Probleme:
Habe ich Android Studio version 0.6. Hier ist wieder ein Teil meiner
build.gradle
Datei:InformationsquelleAutor der Antwort Eugen Martynov
Ich lief in dieses problem und eine Lösung gefunden - auch die classes.jar von dem explodierten bundle (.AVJ) in den Ordner. Ich glaube nicht, dass wird helfen, mit der Suche nach Ressourcen .aar-Abhängigkeiten obwohl.
Edit: Seit Android Gradle build-tools 0.9.0 der Abhängigkeit hat sich geändert:
Edit 2: Seit Android Gradle build-tools 0.10.0 der Abhängigkeit hat sich geändert:
Hinweis: der relative Pfad kann unterschiedlich sein, je nach Struktur Ihres Projekts.
InformationsquelleAutor der Antwort myanimal
Ich hatte ein ähnliches problem mit ALS 1.2.2.
Ich folgte den Schritten,hier. Grundsätzlich:
src/test/java
aus und bewegen Sie den test zu dem jeweiligen Paket gibt.Stellen Sie sicher, dass die folgenden Bereiche Ihres
build.gradle
Datei enthalten diese:Voila! Der rechten Maustaste auf Ihre Testfälle und wählen Sie den JUnit-Geschmack.
BTW, es scheint zum Umschalten der Sichtbarkeit des JUnit/Android-tests bei einer änderung der "Build-Varianten" - tool, also meine Vermutung ist, können Sie entweder test wie JUnit oder Android, aber nicht beides zur gleichen Zeit.
InformationsquelleAutor der Antwort ocarlsen
Für die Nachwelt Android-Studio 2.0+ unterstützt das ausführen von Unit-tests, ohne plugins.
Diesen Bildschirm zugegriffen werden kann, durch Ausführen aus dem Menü > Bearbeiten von Konfigurationen...
InformationsquelleAutor der Antwort scottyab