webentwicklung-frage-antwort-db.com.de

Android Studio "Es wurden keine Tests gefunden"

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:

enter image description here

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.

19
El Wexicano

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.

4
El Wexicano

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!");
}
25
Diego Palomar

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.

8
Cristan

Für mich war das eine blöde Sache. Durch einfaches Umschalten von Release build-Variante auf Debug wurde das Problem gelöst. 

1
gingo

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.

0
astha

@Test-Anmerkung sollte von import org.junit.jupiter.api.Test; aus kommentiert werden.

0
Anjan Debnath

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

0