Czy ktoś wie, jak można uzyskać kontekst projektu testowego w przypadku testu junit systemu Android (rozszerza AndroidTestCase).
Uwaga: test NIE jest testem oprzyrządowania.
Uwaga 2: Potrzebuję kontekstu projektu testowego, a nie kontekstu rzeczywistej testowanej aplikacji.
Potrzebuję tego, aby załadować niektóre pliki z zasobów z projektu testowego.
Odpowiedzi:
Jest nowe podejście z biblioteką wsparcia testowania Androida (obecnie
androidx.test:runner:1.1.1
). Zaktualizowany przykład Kotlin:Jeśli chcesz również uruchomić kontekst aplikacji:
Pełny przykład działania: https://github.com/fada21/AndroidTestContextExample
Spójrz tutaj: Jaka jest różnica między getTargetContext () i getContext (w InstrumentationRegistry)?
źródło
compile "com.android.support.test:runner:1.0.1"
do swojego gradleInstrumentationRegistry.getInstrumentation().context
zamiast niego.Po kilku badaniach wydaje się, że jedynym działającym rozwiązaniem jest to, na które wskazał już york. Musiałbyś rozszerzyć InstrumentationTestCase, a następnie możesz uzyskać dostęp do kontekstu swojej aplikacji testowej za pomocą metody getInstrumentation (). GetContext () - tutaj jest krótki fragment kodu wykorzystujący powyższe sugestie:
źródło
Jak można przeczytać w kodzie źródłowym AndroidTestCase ,
getTestContext()
metoda jest ukryta.Możesz pominąć
@hide
adnotację za pomocą odbicia.Po prostu dodaj następującą metodę w swoim
AndroidTestCase
:Zadzwoń w
getTestContext()
dowolnym momencie. :)źródło
java.lang.NoSuchMethodException: android.test.ServiceTestCase.getTestContext()
Aktualizacja:
AndroidTestCase
ta klasa została wycofana na poziomie API 24. UżyjInstrumentationRegistry
zamiast tego. Nowe testy należy pisać przy użyciu biblioteki obsługi testów systemu Android. Link do ogłoszeniaNależy rozszerzyć z AndroidTestCase zamiast TestCase.
Omówienie klasy AndroidTestCase
Rozszerz to, jeśli potrzebujesz dostępu do zasobów lub innych rzeczy, które zależą od kontekstu działania.
AndroidTestCase - programiści Androida
źródło
Jeśli chcesz uzyskać kontekst z Kotlinem i Mockito, możesz to zrobić w następujący sposób:
Mam nadzieję, że ci pomoże
źródło
To jest poprawny sposób na uzyskanie kontekstu. Inne metody są już przestarzałe
źródło
źródło
Dla tych, którzy napotykają te problemy podczas tworzenia testów automatycznych, musisz zrobić to:
źródło
Pozostałe odpowiedzi są nieaktualne. Obecnie za każdym razem, gdy rozszerzasz AndroidTestCase, istnieje obiekt mContext Context, którego możesz użyć.
źródło