Android Unit-Test: Wie zu verspotten Android-Kontext
Ich bin neu auf Android-Gerät testen und Frage mich, wie kann ich verspotte die Kontext-wenn ich will-unit-test der getSomething() unten.
Vielen Dank im Voraus!
public class Provider {
private final String packageName;
public Provider(Context context) {
packageName = context.getPackageName();
}
public Data getSomething() {
return get(packageName);
}
private Data get(String packageName) {
//return something here based on the packageName
}
}
Versuchte ich
@Before
public void setUp() throws Exception {
provider = new Provider(mock(Context.class));
}
@Test
public void DoSomethingTest() {
final Data data = provider.getSomething();
assertThat(data).isNotNull();
}
Aber ich bekommen den folgenden Fehler:
java.lang.RuntimeException: Stub!
an android.Inhalt.Kontext.(Kontext.java:4)
an android.Inhalt.ContextWrapper.(ContextWrapper.java:5)
- Dies ist nicht eine UI unit test, aber der test funktioniert
Du musst angemeldet sein, um einen Kommentar abzugeben.
Rufen Sie
getPackageName();
auf dieContext
-mock. Diese Ausführung zu erhalten, müssen Sie die mock-Methode wie:Aber das macht dein test ziemlich nutzlos. Aber über dieses denken, das ist nicht eine Prüfung, die ich schreiben würde, da (vorausgesetzt, es funktioniert, wie Sie es erwartet) nur tests das framework die Methode
getPackageName()
. In Ihren tests sollten Sie testen IHREN code oder um genauer zu sein, Ihre algorithmen und nicht den erfolgreichen Aufruf von Methoden.