Wie können wir in Robolectric auf den Kontext einer Anwendung zugreifen?
Eigentlich, ich brauche eine Antwort zu bekommen, ein API-Aufruf, für die ich benötigt Context
.
InformationsquelleAutor der Frage user1667968 | 2012-12-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update.
Verwenden Sie einfach für die version 1.x und 2.x:
Und für version 3.x:
InformationsquelleAutor der Antwort Eugen Martynov
Können Sie
InformationsquelleAutor der Antwort rds
Verwenden:
InformationsquelleAutor der Antwort Xian
Bekommen Anwendungskontext, müssen Sie Folgendes tun:
InformationsquelleAutor der Antwort user1390616
Dieser funktioniert bei mir mit Robolectric 3.5.1:
ShadowApplication.getInstance().applicationContext
InformationsquelleAutor der Antwort Farrukh Najmi
Es ist sicherer, zu verwenden
Robolectric.getShadowApplication()
anstattRobolectric.application
direkt.InformationsquelleAutor der Antwort drspaceboo
Stimmen mit den Antworten von @EugenMartynov und @rds ....
Ein kurzes Beispiel finden Sie unter Volley-Marshmallow-Release
in NetworkImageViewTest.java
// mNIV = new NetworkImageView(Robolectric.application);
mNIV = new NetworkImageView(RuntimeEnvironment.application);
Volley-link verfügbar ist
https://android.googlesource.com/platform/frameworks/volley/+/marshmallow-release
müssen Sie hinzufügen von Abhängigkeiten im volley-Modul in android studio :
dependencies {
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.10.19'
testCompile 'org.robolectric:robolectric:3.1.2'
}
InformationsquelleAutor der Antwort Bhuro
In deinem Fall denke ich, sollten Sie darauf achten, was es ist, du bist tatsächlich testen. Manchmal läuft in Fragen der unüberprüfbare code oder scheinbar untestable code ist ein Zeichen, dass vielleicht dein code refaktorisiert werden.
Für einen API-Aufruf Antwort, die Sie vielleicht nicht wollen, testen Sie die API-Aufruf selbst. Es kann nicht notwendig sein, um zu testen, ob es möglich ist, zu senden/empfangen von Informationen von jedem beliebigen web-service, sondern eher, dass der code Griffe und Prozesse, die Ihre Antwort in einer erwarteten manor.
In diesem Fall könnte es besser sein, überarbeiten Sie den code, den Sie versuchen zu testen. Brechen Sie die response-Analyse/Umgang mit anderen Klasse, die akzeptiert eine einfache
String
und noch testen auf, dass die Klasse durch Einspritzen von Beispiel-string Antworten.Dies ist mehr oder weniger nach den Ideen von Einzelne Verantwortung und Dependency Inversion (Die S und D in SOLID)
InformationsquelleAutor der Antwort grego
Ok, also ich weiß, dass viele andere, sagte, dass diese Antwort vor und könnte bereits veraltet
Hab ich null, denn die wenn () - Teil, war NACH der sut-Initialisierung. Es könnte helfen, einige von Ihnen.
auch ich habe die
am Anfang der Klasse
Auch
InformationsquelleAutor der Antwort Karoly