Donnerstag, Mai 17, 2018

Mockito Stubbing

Mockito gibt dem Entwickler zwei Möglichkeiten an die Hand, Methoden zu stubben. Variante 1, und vermutlich die beliebteste, ist die when/thenReturn Variante. Die Variante 2 doReturn/when dreht die Syntax um. Ein wesentlicher Unterschied zwischen den beiden Methoden ist die Typsicherheit der Variante 1.

when(mockOfClassXy.methodCall(anyParam())).thenReturn(anObject);

Der Typ von anObject muss dem Rückgabetyp der Methode #methodCall(...) entsprechen. Im Gegensatz zu der Variante 2

doReturn(anObject).when(mockOfClassXy).methodCall(anyParam());

kann anObject ein beliebiger Typ sein. Der Fehler wird erst zur Laufzeit entdeckt. Für das Stubben von void Methoden muss auf Variante 2 zurückgegriffen werden. Statt doReturn wird doNothing verwendet. Beispiel:

doNothing().when(mockOfClassA).voidMethodCall(anyParam());

Das stört bei strikter Verwendung von Variante 1 den Lesefluß. Teilweise gibt es hier die Empfehlung ganz auf Variante 1 zu verzichten und komplett auf Variante 2 umzusteigen. Wie gesagt, würde man dann auf die Typprüfung verzichten. Insbesondere bei ‘großen’ Projekten mit langen Testausführungszeiten wäre das vermutlich ein Problem.

Auf Stackoverflow finden sich zu dem Thema massig Einsendungen. Hier ein Beispiel:
Mockito when/thenReturn vs doReturn/when

Keine Kommentare:

Kommentar veröffentlichen

AssertJ und java.util.List

AssertJ hat eine praktische Möglichkeit, Listen in JUnit Tests abzuprüfen. Insbesondere, wenn in der Liste komplexe Objekte abgelegt sind, s...