Mock-Klasse in der Klasse unter test
Wie kann ich mock mit Mockito anderen Klassen in meiner Klasse, die ist unter test?
Beispiel:
MyClass.java
class MyClass {
public boolean performAnything() {
AnythingPerformerClass clazz = new AnythingPerformerClass();
return clazz.doSomething();
}
}
AnythingPerformerClass.java
class AnythingPerformerClass {
public boolean doSomething() {
//very very complex logic
return result;
}
}
Und test:
@Test
public void testPerformAnything() throws Exception {
MyClass clazz = new MyClass();
Assert.assertTrue(clazz.performAnything());
}
Kann ich vortäuschen AnythingPerformerClass
für den Ausschluss unnötiger Logik von AnythingPerformerClass
? Kann ich überschreiben doSomething()
Methode für einfache Rückkehr true
oder false
?
Warum ich angeben, Mockito, weil ich brauche es für Android testing mit Robolectric.
InformationsquelleAutor der Frage NikedLab | 2013-07-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man umgestalten
MyClass
so dass es verwendet dependency injection. Anstatt Sie zum erstellen einerAnythingPerformerClass
Instanz, die Sie nicht passieren konnten, in eine Instanz der Klasse an den Konstruktor vonMyClass
etwa so :Können Sie dann den pass in die mock-Implementierung der unit-test
Alternativ, wenn Ihr
AnythingPerformerClass
Status enthält, dann könnten Sie passieren eineAnythingPerformerClassBuilder
an den Konstruktor übergeben.InformationsquelleAutor der Antwort cyon
Als es derzeit ist (beide Deklaration und Instanziierung des
AnythingPerformerClass
innerhalb einer Methode, es ist nicht möglich, Sie zu verspotten, dieAnythingPerformerClass
mit nur Mockito.Wenn möglich, bewegen Sie sowohl die Deklaration und die Instanzierung von
AnythingPerformerClass
zu der Klasse: deklarieren Sie eine Instanz-variable vom TypAnythingPerformerClass
und haben es instanziiert, indem der Konstruktor.So könnte man leichter injizieren ein mock
AnythingPerformerClass
im test, und geben Sie dessen Verhalten. Zum Beispiel:oder zum testen der Fehlerbehandlung:
InformationsquelleAutor der Antwort mthmulders
Können Sie einstellen, was nach einer Rückkehr in Mockito.
InformationsquelleAutor der Antwort mokuril