Mokito Framework
![](http://img.brin-designs.com/img/games/237/mokito-framework.png)
Intro
Mokito is een raamwerk voor het testen van Java-applicaties. Het simuleert het gedrag van complexe objecten en vergemakkelijkt de ontwikkeling van unit-testing en foutdetectie.
Mockito is OpenSource en is beschikbaar op het volgende adres: //mockito.org/.
Mockito is gebaseerd op het principe van een nep-object dat het gedrag van een ander object simuleert.
De implementatie van Mockito-tests gebeurt in verschillende stappen:
- Creatie van het schijnobject
- Beschrijving van verwacht gedrag
- Met moppen
- Controleren of de interactie met mocks correct is
Voorbeeld
public class ClassA {public ClassA () {} public void fonc1 () {} public void fonc2 () {} public int fonc3 (int a, int b) {return a + b; }} openbare klasse ClassB {ClasseA ca; public ClassA getCa () {return ca; } public void setCa (ClassA ca) {this.ca = ca; } public ClassB () {ca = new ClassA (); } public void met1 () {ca.fonc1 (); ca.fonc1 (); System.out.println (ca.fonc3 (5, 6)); } public void met2 () {ca.fonc2 (); }}
Eenheidstestklasse ClassB:
importeer statische org.mockito.Mockito.mock; import org.mockito.Mockito; public class Test {public static void main (String [] args) {ClassA ca = mock (ClassA.class); Klasse B cb = nieuwe Klasse B (); cb.setCa (ca); cb.met1 (); Mockito.verify (ca, Mockito.times (2)). Fonc1 (); Mockito.verify (ca, Mockito.times (1)). Fonc3 (Mockito.anyInt (), Mockito.anyInt ()); }}
Code analyse:
ClassA ca = mock (ClassA.class);
=> Het creëert een AC, een mock klasse ClassA.
cb.setCa (ca);
=> Het beïnvloedt het ca-object voor het cb-object.
cb.met1 ();
=> Roept het object op met de cb met1 () methode.
Mockito.verify (ca Mockito.times (2)). Func1 ();
=> Verifieert dat de methode van mock ca func1 tweemaal wordt aangeroepen.
Mockito.verify (ca, Mockito.times (1)). Fonc3 (Mockito.anyInt (), Mockito.anyInt ());
=> Verifieert dat de methode van onechte func3 ca slechts eenmaal door twee integerparameters wordt aangeroepen.
Wanneer de controle mislukt, wordt een uitzondering gegenereerd.
Voorbeeld:
Mockito.verify (ca, Mockito.atLeast (1)). Fonc2 ();
=> Deze regel genereert de volgende uitzondering:
Uitzondering in thread "main" Gezocht maar niet ingeroepen:
classA.fonc2 (); -> bij Test01.main (Test01.java:16)
==> Het geeft aan dat de methode func2 () mock de AC niet bekend is.
U kunt ook de resultaten wijzigen die door een functie worden geretourneerd.
System.out.println ("Het resultaat van ca.fonc (3, 3) is" + approxfonc3 (3, 3)); Mockito.when (ca.fonc3 (Mockito.anyInt (), Mockito.anyInt ())). ThenReturn (Integer.valueOf (5)); System.out.println ("Het resultaat van ca.fonc (3, 3) is" + approxfonc3 (3, 3));
Code analyse:
Mockito.when (ca.fonc3 (Mockito.anyInt (), Mockito.anyInt ())). thenReturn (Integer.valueOf (5));
# De geretourneerde waarde van functie fonc3 (mock) was 0 .
We dwingen het tot 5 .
Dit is vooral handig bij het gebruik van functies die verschillende functies (condities, loops etc.) bevatten en we willen het gedrag van elke functie verifiëren. We moeten daarom de mocks die in deze functie worden gebruikt, configureren zodat deze aan al deze voorwaarden voldoet.
Een tip van wjaouadi.