Mokito Framework
Intro
Mokito er et rammeverk for testing av Java-programmer. Den simulerer oppførselen til komplekse gjenstander og letter utviklingen av enhetstesting og feilsøking.
Mockito er OpenSource og er tilgjengelig på følgende adresse: //mockito.org/.
Mockito er basert på prinsippet om et mock objekt som simulerer oppførelsen til et annet objekt.
Implementeringen av Mockito testing er gjort i flere trinn:
- Opprettelse av mock objektet
- Beskrivelse av forventet oppførsel
- Bruk mocks
- Kontrollerer at samspillet med mocks er riktig
Eksempel
offentlig klasse ClassA {offentlig ClassA () {} offentlig tomt fonc1 () {} offentlig tomt fonc2 () {} offentlig int fonc3 (int a, int b) {return a + b; }} offentlig klasse ClassB {ClasseA ca; offentlig ClassA getCa () {return ca; } Offentlig tomt settCa (ClassA ca) {this.ca = ca; } offentlig klasse B () {ca = ny klasse a (); } offentlig tomrom met1 () {ca.fonc1 (); ca.fonc1 (); System.out.println (ca.fonc3 (5, 6)); } offentlig tomrom met2 () {ca.fonc2 (); }}
Enhetstestingsklasse Klasse B:
importer statisk org.mockito.Mockito.mock; importer org.mockito.Mockito; offentlig klasse Test {public static void main (String [] args) {ClassA ca = mock (ClassA.class); ClassB cb = ny ClassB (); cb.setCa (ca); cb.met1 (); Mockito.verify (ca, Mockito.times (2)). Fonc1 (); Mockito.verify (ca, Mockito.times (1)). Fonc3 (Mockito.anyInt (), Mockito.anyInt ()); }}
Kodeanalyse:
ClassA ca = mock (ClassA.class);
=> Det skaper en AC, en mock klasse ClassA.
cb.setCa (ca);
=> Det påvirker ca-objektet til cb-objektet.
cb.met1 ();
=> Kaller objektet med metoden cb met1 ().
Mockito.verify (ca Mockito.times (2)). Func1 ();
=> Verifiserer at metoden til mock ca func1 kalles to ganger.
Mockito.verify (ca, Mockito.times (1)). Fonc3 (Mockito.anyInt (), Mockito.anyInt ());
=> Verifiserer at metoden for mock func3 ca kalles bare en gang til to heltallsparametere.
Når sjekken mislykkes, genereres et unntak.
Eksempel:
Mockito.verify (ca, Mockito.atLeast (1)). Fonc2 ();
=> Denne linjen genererer følgende unntak:
Unntak i tråden "main" Ønsket men ikke påkalt:
classA.fonc2 (); -> på Test01.main (Test01.java:16)
==> Det indikerer at metoden func2 () mock AC ikke er kjent.
Du kan også endre resultatene som returneres fra en funksjon.
System.out.println ("Resultatet av ca.fonc (3, 3) er" + ca.fonc3 (3, 3)); Mockito.when (ca.fonc3 (Mockito.anyInt (), Mockito.anyInt ())). ThenReturn (Integer.valueOf (5)); System.out.println ("Resultatet av ca.fonc (3, 3) er" + ca.fonc3 (3, 3));
Kodeanalyse:
Mockito.when (ca.fonc3 (Mockito.anyInt (), Mockito.anyInt ())). thenReturn (Integer.valueOf (5));
# Returneringsverdien til funksjon fonc3 (mock) var 0 .
Vi tvinger den til 5 .
Dette er spesielt nyttig når du bruker funksjoner som inneholder flere funksjoner (forhold, looper etc.), og vi vil verifisere oppførselen til en hvilken som helst funksjon. Vi trenger derfor å konfigurere mocks brukt i denne funksjonen slik at den passerer alle disse forholdene.
Et tips fra wjaouadi.