Für meine Instrumentierungstests habe ich verwendet
@RunWith(AndroidJUnit4.class)
von
import androidx.test.runner.AndroidJUnit4;
um meine Testfälle zu etablieren. Nun wird diese Linie mit dem Hinweis als veraltet markiert die Verwendung AndroidJUnit4
von
import androidx.test.ext.junit.runners.AndroidJUnit4
Wenn ich jedoch versuche, AndroidJUnit4
aus dem genannten Paket zu importieren , wird der Fehler angezeigt, der ext
nicht behoben werden kann.
Haben Sie eine Idee, welches Paket in gradle enthalten sein sollte, um dieses Problem zu beheben?
android
junit
android-testing
androidx
Marcel Gangwisch
quelle
quelle
Antworten:
Laut der Dokumentation für AndroidJUnit4 ,
Die Gradle-Datei sollte die folgende Zeile enthalten:
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
Ändern Sie die Testklasse in
AndroidJUnit4ClassRunner
vonAndroidJUnit4
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 im Maven-Repository von Google überprüfen
quelle
Wenn Sie die Lösung von @ MarcelGangwisch ausprobiert haben und Ihr Build fehlschlägt und angibt, dass die Ressource nicht gefunden werden kann UND Sie auch Ihr Projekt bereinigt / neu erstellt haben und es immer noch nicht funktioniert, versuchen Sie Folgendes: (basiert 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, z.
Für UI-Tests:
Für Unit-Tests:
In meinem Fall habe ich es als beides hinzugefügt und jetzt funktioniert es.
quelle
Lösung
Fügen Sie diese Zeile zu build.gradle hinzu:
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
Ändern Sie
AndroidJUnit4
zuAndroidJUnit4ClassRunner
in der TestklasseWarnung
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
quelle
Für mich haben die folgenden Schritte funktioniert:
1. Ersetzen Sie die Androidx-Bibliotheken durch die hier veröffentlichte . Mein Finale
app/build.gradle
sah so aus:Ich habe dann die importierten Module in meiner
ExampleInstrumentTest.java
Klasse manuell durch die neuesten Klassen ersetzt:Was mich nervte, war die Tatsache, dass die
InstrumentationRegistery
Klasse immer noch veraltet war. Also habe ichInstrumentationRegistry.getInstrumentation().getTargetContext();
aus derandroidx.test.platform.app.InstrumentationRegistry
Klasse verwendet.quelle
@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.ApllicationProvider.getApplicationContext<Context>()
anstelle vonInstrumentationRegistry.getInstrumentation().getTargetContext();
Ich habe alles oben Genannte ausprobiert, bis ich zur offiziellen Android-Site gegangen bin, und sie haben vorgeschlagen, von
androidx.test.ext.junit.runners.AndroidJUnit4
statt zu importierenandroidx.test.runner.AndroidJUnit4
. Verknüpfungquelle
In meinem Fall hat das Wechseln
androidTestImplementation
zutestImplementation
geholfen. Ich kannte den Unterschied nicht, bevor ich diesen Android-Unterschied zwischen testImplementation und androidTestImplementation in build.gradle gelesen habequelle
Wenn Sie diese AnroidX-Testbibliotheken importiert haben, haben Sie das Projekt synchronisiert und neu erstellt, aber die importierten Pakete wurden immer noch nicht aufgelöst. Denken Sie daran, wie Sie Ihr Projekt auf AndroidX aktualisiert haben, schließen Sie Android Studio, entfernen Sie den
.idea
Ordner und öffnen Sie Ihr Projekt erneut ...Das hat bei mir funktioniert!
quelle
Fügen Sie diese Zeilen in das build.gradle-App-Modul ein.
testImplementation 'androidx.test.ext: junit: 1.1.1' androidTestImplementation 'androidx.test.ext: junit: 1.1.1'
In der Testklasse ersetzen Sie Ihren Testläufer durch
import androidx.test.ext.junit.runners.AndroidJUnit4;
Wenn
InstrumentationRegistry.getTargetContext()
ist deprecated VerwendungInstrumentationRegistry
vonandroidx.test.platform.app
wie folgtInstrumentationRegistry.getInstrumentation (). GetTargetContext ()
quelle