War jemand in der Lage, Tests in Android Studio auszuführen (über die GUI und nicht über das Terminal), konnte ich keine Tests über die GUI ausführen.
Jedes Mal, wenn ich versuche, Tests über die GUI auszuführen, erhalte ich nur die folgende Meldung:
Ich kann die Tests mit folgendem Befehl vom Terminal ausführen:
./gradlew connectedAndroidTest
Ich lasse Android Studio 0.5.2 mit Gradle 1.11 mit Plugin 0.9.0 auf Mac OSX
Meine Projektstruktur sieht wie folgt aus:
MyProject/
src/
androidTest/
Java/
com.myproject.app.test/
… (tests source code) …
main/
Java/
com.myproject.app/
… (source code) …
res/
… (resources code) …
build.gradle
Meine build.gradle-Datei sieht folgendermaßen aus:
…
Android {
compileSdkVersion 19
buildToolsVersion "19.0.1"
defaultConfig {
versionCode 12
versionName "2.0"
minSdkVersion 9
targetSdkVersion 19
testPackageName "com.test.foo"
testInstrumentationRunner "Android.test.InstrumentationTestRunner"
}
}
…
Wenn jemand Vorschläge hat, bin ich mehr als glücklich, sie hier zu haben.
Ok, ich habe die Ursache meines Problems gefunden.
In der Datei misc.xml , die sich im Ordner .idea meines Projekts befindet, wurde ein ungültiger Attributwert für die Komponente ProjectRootManager angegeben, der wie folgt aussah:
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="1.6 (3)" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
Durch die Änderung des Attributwerts "Projekt-Jdk-Name" in "" 1.6 "wurde das Problem für mich behoben. Nachfolgend sehen Sie, wie es aussah, nachdem ich den Wert aktualisiert hatte.
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="1.6" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
Hoffe, das hilft jemandem.
Heute hatte ich das gleiche Problem mit einigen Espresso-Tests und es machte mich verrückt, weil alles normal schien. Schließlich entdeckte ich, dass das Problem darin bestand, dass die mit @BeforeClass
(Annotation zur Markierung der Methode, die vor einer der Testmethoden in der Klasse ausgeführt werden muss) kommentierte Methode eine Ausnahme auslöste. Der Grund, für den ich mehr Zeit als erwartet brauchte, war, weil der Stacktrace der Ausnahme nicht in dem Log-Fenster des Run-Registers angezeigt wird, sondern in der Protokollfenster der Registerkarte Android-Monitor
Wenn Sie das Problem reproduzieren möchten, fügen Sie dies Ihrer Testklasse hinzu:
@BeforeClass
public static void setupClass() {
throw new RuntimeException("Sorry dude, you won't find any test!");
}
Dies kann passieren, wenn der Typ Ihrer Laufkonfiguration falsch ist.
Bei mir läuft das falsch, wenn Sie einen Espresso-Test mit Kotlin ausführen: Es erstellt irgendwie einen Android-JUnit-Test, der der falsche Typ ist. Manuelles Erstellen eines Android-instrumentierten Tests löst das Problem.
Für mich war das eine blöde Sache. Durch einfaches Umschalten von Release
build-Variante auf Debug
wurde das Problem gelöst.
Das Problem wurde für mich nur durch Löschen der Daten von meinem Emulator behoben. In Protokollen konnte ich sehen, dass nicht genügend Speicherplatz vorhanden war. Es war kein Konfigurationsproblem für mich, da der Test, den ich vor dem Ausführen des Tests ausgeführt habe und der mir einen leeren Suite-Fehler bescherte, einwandfrei funktionierte und beide Tests sich am selben Ort im Projekt befanden.
@Test-Anmerkung sollte von import org.junit.jupiter.api.Test;
aus kommentiert werden.
In meinem Fall, USING KOTLIN , hat es nichts geworfen. Wenn ich im Terminal den Befehl ausführen möchte, den es versucht:
$ adb Shell am Instrument -w -r -e debuggt false -e Klasse xx.xxxxxxx.xx.xx.xxx.xxx.xxx.HomeActivityTests xx.xxxxxxx.xx.xx.debug.test/Android.support.test.runner.AndroidJUnitRunner
es wird ein Fehler ausgegeben:
Verursacht durch: org.mockito.exceptions.base.MockitoException:
Die Klasse xx.xxxxxxx.xx.xx.xxx.xxx.xxx.ProductUseCase kann nicht nachgeahmt werden
Mockito kann nicht verspotten, weil: - letzte Klasse Bei xx.xxxxxxx.xx.xx.rules.useCases.ProductUseCaseRule. (ProductUseCaseRule.kt: 36) Bei xx. xxxxxxx.xx.xx.xxx.xxx.HomeActivityTests (HomeActivityTests.kt: 25) ... 20 mehr
Misserfolge !!!
und das hat mir gezeigt, dass ich meine Klasse nicht open
habe, da das ein muss ist, wenn ich mit Kotlin teste