Spring in Practice: Mockito und Spring

Eine der haupt merkmal von spring ist Dependcy Injection. Also meistens wird irgendwas ins irgendwas reingeholt. Um solche Java Objekte zu Testen benötigt man Differzierung um welche Funktionalität es gerade geht. Also wir benötigen  ein Objekt der so verhalt wie reingeholt aber muss nicht gleich ausführlich sein aber manchmal auch. Mockito kommt da in spiel und bringt uns solche dependecies als Objekte rein.

Solche objekte können

  • Dummy objekt: wird eingereicht aber nie benutzt. Eher um Methoden Parameterliste zu füllen.
  • Fake objekt : haben implementierung diw sinnvoll aber vereinfacht ist. Zbs. In memory datenbank
  • Stub : teil implementierung eine interface oder klasse um eine instanz von diese in Test zu nutzen. Die beantworten keine externe anfragen ausser was programmiert ist. When(..).thenReturns(..);
  • Mock Objekt: ist eine dummy implementierung von class um manche methoden aufruf zu nachmachen.

Sein.

Prozess

Mockito in pom.xml hinzufügen um es nutzen zu können. Folgend ist Prozess welche wir benutzen können um Mockito Tests zu scheiben. Tests können wir mit @Test(expected=’..Exception’) annotation erstellen. Hier können wir zusatlich expected parameter setzen welche eine Exception reinnimmt welche wir erwarten.

  1. Mock Objekte Erstellen

Wir können mock von Klassen erstellen den wir methode mock()  oder @Mock benutzen. In späteren fall müssen wir auch MockitoAnnotations.initMocks(this) aufrufen oder @RunWith(MockitoJUnitRunner.class) auf test klasse annoteieren . Diese können wir in eine Methode aufrufen wo wir @before annotieren um vor der test zu erstellen.

  1. Stubbing

Dass bedeutet simulation von Mocks verhalten. Wir können per when(..).thenReturns(..) verhalten von Mocks vordefinieren.

  1. Verifying

Kontrolle von ergebnis von erwartet und nach ausfuhr der Tests können wir mit Verify() methode durchführen.

Hierfür können wir auch assertions von andere Librariues wie AssertJ benutzen.