Mock Final Classes and Methods with Mockito

1. Oversikt

I denne korte artikkelen vil vi fokusere på hvordan å spotte endelige klasser og metoder - ved hjelp av Mockito.

Som med andre artikler som er fokusert på Mockito-rammeverket (som Mockito Verify, Mockito When / Then og Mockito's Mock Methods), bruker vi Min liste klasse vist nedenfor som samarbeidspartner i testsaker.

Vi legger til en ny metode for denne opplæringen:

offentlig klasse MyList utvider AbstractList {final public int finalMethod () {return 0; }}

Og vi vil også utvide den med en endelig underklasse:

offentlig finaleklasse FinalList utvider MyList {@Override public int size () {retur 1; }} 

2. Konfigurer Mockito for endelige metoder og klasser

Før Mockito kan brukes til å spotte endelige klasser og metoder, må den konfigureres.

Vi må legge til en tekstfil til prosjektet src / test / resources / mockito-utvidelser katalog oppkalt org.mockito.plugins.MockMaker og legg til en enkelt tekstlinje:

mock-maker-inline 

Mockito sjekker utvidelser katalog for konfigurasjonsfiler når den lastes inn. Denne filen muliggjør spott av endelige metoder og klasser.

3. Spott en siste metode

Når Mockito er riktig konfigurert, kan en endelig metode spottes som alle andre:

@Test offentlig ugyldig nårMockFinalMethodMockWorks () {MyList myList = new MyList (); MyList mock = mock (MyList.class); når (mock.finalMethod ()). deretter Retur (1); assertNotEquals (mock.finalMethod (), myList.finalMethod ()); } 

Ved å lage en konkret forekomst og en hånlig forekomst av Min liste, kan vi sammenligne verdiene som returneres av begge versjoner av finalMethod () og verifiser at spotten kalles.

4. Mock en sluttklasse

Å spotte en siste klasse er like enkelt som å spotte en hvilken som helst annen klasse:

@Test offentlig ugyldig nårMockFinalClassMockWorks () {FinalList finalList = new FinalList (); FinalList mock = mock (FinalList.class); når (mock.size ()). deretterReturn (2); assertNotEquals (mock.size (), finalList.size ()); } 

I likhet med testen ovenfor oppretter vi en konkret forekomst og en hånlig forekomst av vår siste klasse, håner en metode og verifiserer at den hånede forekomsten oppfører seg annerledes.

5. Konklusjon

I denne raske opplæringen dekket vi hvordan man kan spotte endelige klasser og metoder med Mockito ved å bruke en Mockito-utvidelse.

De fulle eksemplene, som alltid, finner du på GitHub.