Wenn ich jedoch versuche zu importieren AndroidJUnit4 aus dem benannten Paket bekomme ich den Fehler, dass ext kann nicht gelöst werden.
Haben Sie eine Idee, welches Paket in Gradle enthalten sein sollte, um dieses Problem zu lösen?
stackoverflow.com/questions/43342831/…
– IntelliJ Amiya
12. Oktober 2018 um 9:44 Uhr
Ich denke, Ihre Quelle ist veraltet, sie erwähnen Androidx überhaupt nicht.
– Marcel Gangwisch
12. Oktober 2018 um 9:48 Uhr
Das Testen von Einheiten auf Android ist ein völliges Durcheinander von Fehlern und Verwerfungen. Das einzige, was für mich funktioniert, ist das Erstellen eines neuen Scratch-Projekts, das Kopieren der relevanten Dateien aus diesem Projekt in meins, das Umschalten in den Debug-Modus und das Ausführen einer vollständigen Cache-Invalidierung. Auch für AndroidJUnit4-Tests muss der Paketname mit dem Bibliothekspaketnamen übereinstimmen.
Ändern Sie die Testklasse in AndroidJUnit4ClassRunner aus AndroidJUnit4
Wenn es immer noch nicht funktioniert, stellen Sie sicher, dass Sie Ihr Projekt bereinigen und/oder neu erstellen. Sie können die aktuelle Version auch direkt einchecken Das Maven-Repository von Google
Mein Gradle hat das und kann das Problem immer noch nicht lösen.
– zuko
1. Dezember 2018 um 18:10 Uhr
@zuko Bereinigen und/oder erstellen Sie Ihr Projekt neu, es sollte vorhanden sein. Wenn dies immer noch nicht der Fall ist und Sie Module verwenden, überprüfen Sie, ob Ihre Abhängigkeitshierarchie wie erwartet eingerichtet ist. Möglicherweise müssen Sie diese auch zu den Modulen der obersten Ebene hinzufügen, da Testbibliotheken nicht in gemeinsam genutzte Module zur Verwendung durch Upstream-Module kompiliert werden.
– Jon Adams
28. Dezember 2018 um 1:58 Uhr
@JonAdams Mein Abhängigkeitsbaum hielt aus irgendeinem Grund an einem Verweis auf ältere Bibliotheken fest, obwohl ich dachte, ich hätte sie entfernt. Nachdem ich verschiedene Dinge ausprobiert hatte, habe ich das Projekt einfach auf ein neues migriert und jetzt ist alles in Ordnung.
– zuko
29. Dezember 2018 um 20:50 Uhr
Sollen wir uns auch ändern testInstrumentationRunner in der Gradle-Datei aus androidx.test.runner.AndroidJUnitRunner zu androidx.test.ext.junit.runners.AndroidJUnit4? Ich frage mich nur, ob es eine Diskrepanz gibt.
– Ein Droide
2. Februar 2019 um 9:17 Uhr
@A Droid Ersetzen Sie das alte AndroidJUnit4-Paket beim Import durch ein neues. Ersetzen Sie einfach import androidx.test.runner.AndroidJUnit4; mit Import androidx.test.ext.junit.runners.AndroidJUnit4;
– Xplosiv
8. Februar 2019 um 19:15 Uhr
Wenn Sie die Lösung von @MarcelGangwisch ausprobiert haben und Ihr Build fehlschlägt und sagt, dass er die Ressource nicht finden kann UND Sie Ihr Projekt auch bereinigt/neu erstellt haben und es immer noch nicht funktioniert, versuchen Sie Folgendes: (basierend auch auf der Lösung von @KrzysztofDziuba)
Stellen Sie in Ihrer Gradle-Datei, in der Sie die Abhängigkeit geändert haben, sicher, dass Sie sie als den Typ hinzufügen, den Sie benötigen, dh:
In meinem Fall habe ich es als beides hinzugefügt und jetzt funktioniert es.
Bei mir haben folgende Schritte funktioniert:
1. Ersetzen Sie die androidx-Bibliotheken durch die geposteten hier . mein Finale app/build.gradle sah so aus:
Die importierten Module habe ich dann manuell in meiner ersetzt ExampleInstrumentTest.java Klasse mit neusten Klassen:
import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.rule.ActivityTestRule;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4ClassRunner.class)
public class ExampleInstrumentedTest {
...
@Rule
public final ActivityTestRule<MainActivity> main = new ActivityTestRule<>(MainActivity.class, true);
@Before
public void init() {
...
}
@Test
public void listCount() {
...
}
@Test
public void useAppContext() {
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
Assert.assertEquals("in.curioustools.aad_x_testing2", appContext.getPackageName());
System.out.println("useAppContext : Test Ran");
}
}
Was mich nervte, war die Tatsache, dass InstrumentationRegistery Klasse war immer noch veraltet. Also habe ich verwendet InstrumentationRegistry.getInstrumentation().getTargetContext(); aus androidx.test.platform.app.InstrumentationRegistry Klasse.
@RunWith(AndroidJUnit4ClassRunner.class) war der Teil, der das Problem in meinem Fall gelöst hat. Ich verstehe nicht wirklich, warum Android Studio manchmal veralteten Code generiert.
– Rafsandschani
18. Juni 2019 um 10:08 Uhr
Verwenden ApllicationProvider.getApplicationContext<Context>() Anstatt von InstrumentationRegistry.getInstrumentation().getTargetContext();
– Mitsch
20. September 2019 um 16:37 Uhr
HeshanHH
Lösung
Fügen Sie diese Zeile zu build.gradle hinzu: androidTestImplementation 'androidx.test.ext:junit:1.1.1'
Veränderung AndroidJUnit4 zu AndroidJUnit4ClassRunner in der Testklasse
Warnung
Ich habe den gleichen Fehler erhalten, aber die folgende Lösung ist für mich fehlgeschlagen:
Datei -> Caches ungültig machen … und wählen Sie ungültig machen und neu starten
Ich habe alles oben Gesagte ausprobiert, bis ich zur offiziellen Android-Website ging, und sie schlugen vor, von zu importieren androidx.test.ext.junit.runners.AndroidJUnit4 Anstatt von androidx.test.runner.AndroidJUnit4. Verknüpfung
hat
Fügen Sie diese Zeilen in das App-Modul build.gradle ein.
In meinem Fall wechseln androidTestImplementation zu testImplementation geholfen. Ich kannte den Unterschied nicht, bevor ich diesen Android-Unterschied zwischen testImplementation und androidTestImplementation in build.gradle gelesen habe
13513200cookie-checkAndroidJUnit4.class ist veraltet: Wie verwende ich androidx.test.ext.junit.runners.AndroidJUnit4?yes
stackoverflow.com/questions/43342831/…
– IntelliJ Amiya
12. Oktober 2018 um 9:44 Uhr
Ich denke, Ihre Quelle ist veraltet, sie erwähnen Androidx überhaupt nicht.
– Marcel Gangwisch
12. Oktober 2018 um 9:48 Uhr
Das Testen von Einheiten auf Android ist ein völliges Durcheinander von Fehlern und Verwerfungen. Das einzige, was für mich funktioniert, ist das Erstellen eines neuen Scratch-Projekts, das Kopieren der relevanten Dateien aus diesem Projekt in meins, das Umschalten in den Debug-Modus und das Ausführen einer vollständigen Cache-Invalidierung. Auch für AndroidJUnit4-Tests muss der Paketname mit dem Bibliothekspaketnamen übereinstimmen.
– Rupert Rawnsley
4. Oktober 2019 um 14:08 Uhr