Mock endelige klasser og metoder med Mockito

1. Oversigt

I denne korte artikel vil vi fokusere på, hvordan man kan spotte endelige klasser og metoder - ved hjælp af Mockito.

Som med andre artikler, der fokuserer på Mockito-rammen (som Mockito Verify, Mockito When / Then og Mockito's Mock Methods), bruger vi MyList klasse vist nedenfor som samarbejdspartner i testsager.

Vi tilføjer en ny metode til denne tutorial:

public class MyList udvider AbstractList {final public int finalMethod () {return 0; }}

Og vi udvider det også med en endelig underklasse:

offentlig endelig klasse FinalList udvider MyList {@Override public int størrelse () {retur 1; }} 

2. Konfigurer Mockito til endelige metoder og klasser

Inden Mockito kan bruges til at spotte endelige klasser og metoder, skal den konfigureres.

Vi er nødt til at tilføje en tekstfil til projektets src / test / resources / mockito-extensions katalog navngivet org.mockito.plugins.MockMaker og tilføj en enkelt tekstlinje:

mock-maker-inline 

Mockito kontrollerer udvidelser mappe til konfigurationsfiler, når den indlæses. Denne fil muliggør hån af endelige metoder og klasser.

3. Hån en endelig metode

Når Mockito er korrekt konfigureret, kan en endelig metode bespottes som enhver anden:

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

Ved at oprette en konkret instans og en mock-forekomst af MyList, kan vi sammenligne de værdier, der returneres af begge versioner af finalMethod () og verificer at mock kaldes.

4. Hån en endelig klasse

Det er lige så let at spotte en sidste klasse som at spotte enhver anden klasse:

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

I lighed med testen ovenfor opretter vi en konkret instans og en mock-forekomst af vores sidste klasse, mock en metode og verificerer, at den hånede instans opfører sig anderledes.

5. Konklusion

I denne hurtige vejledning dækkede vi, hvordan man spotter de sidste klasser og metoder med Mockito ved hjælp af en Mockito-udvidelse.

De fulde eksempler findes som altid på GitHub.