Do testów oprzyrządowania używałem
@RunWith(AndroidJUnit4.class)
z
import androidx.test.runner.AndroidJUnit4;
w celu ustalenia moich przypadków testowych. Obecnie linia ta zostanie oznaczona jako przestarzałe z nutą do korzystania AndroidJUnit4
z
import androidx.test.ext.junit.runners.AndroidJUnit4
Jednak jeśli spróbuję zaimportować AndroidJUnit4
z nazwanego pakietu, otrzymam błąd, którego ext
nie można rozwiązać.
Czy masz pomysł, jaki pakiet powinien zostać uwzględniony w programie, aby rozwiązać ten problem?
android
junit
android-testing
androidx
Marcel Gangwisch
źródło
źródło
Odpowiedzi:
Według dokumentacji AndroidJUnit4 ,
Plik oceny powinien zawierać następujący wiersz:
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
Zmień klasę testową na
AndroidJUnit4ClassRunner
zAndroidJUnit4
Jeśli nadal nie działa, upewnij się, że wyczyściłeś i / lub odbudowałeś swój projekt. Możesz również sprawdzić bieżącą wersję bezpośrednio w repozytorium maven Google
źródło
Jeśli wypróbowałeś rozwiązanie @ MarcelGangwisch, a kompilacja nie powiedzie się, że nie można znaleźć zasobu ORAZ również wyczyściłeś / przebudowałeś projekt i nadal nie działa, spróbuj tego: (w oparciu również o rozwiązanie @ KrzysztofDziuba)
W pliku ocen, w którym zmieniłeś zależność, upewnij się, że dodajesz go jako potrzebny typ, tj .:
W przypadku testów interfejsu użytkownika:
Do testów jednostkowych:
W moim przypadku dodałem go jako oba i teraz działa.
źródło
Rozwiązanie
Dodaj ten wiersz do build.gradle:
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
Zmień
AndroidJUnit4
naAndroidJUnit4ClassRunner
w klasie testowejOstrzeżenie
Wystąpił ten sam błąd, ale dla mnie następujące rozwiązanie nie powiodło się:
Plik -> Unieważnij pamięć podręczną ... i wybierz Unieważnij i uruchom ponownie
źródło
Dla mnie zadziałały następujące kroki:
1. Zastąp biblioteki systemu Androidx biblioteką opublikowaną tutaj . mój finał
app/build.gradle
wyglądał tak:Następnie ręcznie zastąpiłem zaimportowane moduły w mojej
ExampleInstrumentTest.java
klasie najnowszymi klasami:To, co mnie wkurzyło, to fakt, że
InstrumentationRegistery
lekcja była nadal przestarzała. Więc użyłemInstrumentationRegistry.getInstrumentation().getTargetContext();
zandroidx.test.platform.app.InstrumentationRegistry
klasy.źródło
@RunWith(AndroidJUnit4ClassRunner.class)
była część, w której problem został rozwiązany w moim przypadku. Naprawdę nie rozumiem, dlaczego studio Android czasami generuje przestarzały kod.ApllicationProvider.getApplicationContext<Context>()
zamiastInstrumentationRegistry.getInstrumentation().getTargetContext();
Próbowałem wszystkich wyżej wymienionych, dopóki nie poszedłem na oficjalną stronę Androida, i zasugerowali import z
androidx.test.ext.junit.runners.AndroidJUnit4
zamiastandroidx.test.runner.AndroidJUnit4
. połączyćźródło
W moim przypadku zmiana
androidTestImplementation
natestImplementation
pomoc. Nie znałem różnicy przed przeczytaniem tej różnicy między testem Android i testTimImplementation w build.gradleźródło
Jeśli zaimportujesz te biblioteki testowe AnroidX, zsynchronizujesz i przebudujesz projekt, ale zaimportowane pakiety nadal nie zostały rozwiązane. Pamiętaj tylko, jak zaktualizowałeś swój projekt do systemu AndroidX, zamknij Android Studio, usuń
.idea
folder i ponownie otwórz projekt ...To zadziałało dla mnie!
źródło
Uwzględnij te wiersze w module aplikacji build.gradle.
testImplementation „androidx.test.ext: junit: 1.1.1„ androidTestImplementation ”androidx.test.ext: junit: 1.1.1”
W klasie testowej zamień swojego biegacza testowego na
import androidx.test.ext.junit.runners.AndroidJUnit4;
Jeśli
InstrumentationRegistry.getTargetContext()
jest przestarzała korzystanieInstrumentationRegistry
zandroidx.test.platform.app
takiegoInstrumentationRegistry.getInstrumentation (). GetTargetContext ()
źródło