Weiß jemand, wie man den Kontext des Testprojekts im Android Junit-Testfall abruft (erweitert AndroidTestCase).
Hinweis: Der Test ist KEIN Instrumentierungstest.
Hinweis 2: Ich benötige den Kontext des Testprojekts, nicht den Kontext der tatsächlich getesteten Anwendung.
Ich benötige dies, um einige Dateien aus Assets aus dem Testprojekt zu laden.
Antworten:
Es gibt einen neuen Ansatz mit der Android Testing Support Library (derzeit
androidx.test:runner:1.1.1
). Kotlin aktualisiertes Beispiel:Wenn Sie auch App-Kontext ausführen möchten:
Vollständiges Beispiel: https://github.com/fada21/AndroidTestContextExample
Schauen Sie hier: Was ist der Unterschied zwischen getTargetContext () und getContext (in InstrumentationRegistry)?
quelle
compile "com.android.support.test:runner:1.0.1"
Ihrem gradle hinzuzufügenInstrumentationRegistry.getInstrumentation().context
stattdessen.Nach einigen Recherchen scheint die einzige funktionierende Lösung die zu sein, auf die Yorkw bereits hingewiesen hat. Sie müssten InstrumentationTestCase erweitern und können dann mit getInstrumentation () auf den Kontext Ihrer Testanwendung zugreifen. GetContext () - hier ist ein kurzer Codeausschnitt mit den obigen Vorschlägen:
quelle
Wie Sie im AndroidTestCase-Quellcode lesen können , ist die
getTestContext()
Methode ausgeblendet.Sie können die
@hide
Anmerkung mithilfe der Reflexion umgehen .Fügen Sie einfach die folgende Methode hinzu
AndroidTestCase
:Dann rufen Sie
getTestContext()
jederzeit an. :) :)quelle
java.lang.NoSuchMethodException: android.test.ServiceTestCase.getTestContext()
Update:
AndroidTestCase
Diese Klasse war in API-Level 24 veraltet. Verwenden SieInstrumentationRegistry
stattdessen. Neue Tests sollten mithilfe der Android Testing Support Library geschrieben werden. Link zur AnkündigungSie sollten von AndroidTestCase anstelle von TestCase erweitern.
Übersicht über die AndroidTestCase-Klasse
Erweitern Sie diese Option, wenn Sie auf Ressourcen oder andere Dinge zugreifen müssen, die vom Aktivitätskontext abhängen.
AndroidTestCase - Android-Entwickler
quelle
Wenn Sie den Kontext mit Kotlin und Mockito erhalten möchten, können Sie dies folgendermaßen tun:
Ich hoffe es hilft dir
quelle
Dies dient dazu, den Kontext zu korrigieren. Andere Methoden sind bereits veraltet
quelle
quelle
Wenn Sie beim Erstellen automatisierter Tests auf diese Probleme stoßen, müssen Sie Folgendes tun:
quelle
Die anderen Antworten sind veraltet. Jedes Mal, wenn Sie AndroidTestCase erweitern, können Sie ein mContext Context-Objekt verwenden.
quelle