Ismijavajte završne satove i metode s Mockitom

1. Pregled

U ovom ćemo se kratkom članku usredotočiti na to kako se rugati završnim predavanjima i metodama - koristeći Mockito.

Kao i kod ostalih članaka usredotočenih na Mockito okvir (poput Mockito Verify, Mockito When / Then i Mockito's Mock Methods), koristit ćemo MyList klasa prikazana u nastavku kao suradnik u test slučajevima.

Za ovaj ćemo vodič dodati novu metodu:

javna klasa MyList proširuje AbstractList {final public int finalMethod () {return 0; }}

A također ćemo ga produžiti s konačni podrazred:

javni finalni razred FinalList proširuje MyList {@Override public int size () {return 1; }} 

2. Konfigurirajte Mockito za konačne metode i satove

Prije nego što se Mockito može koristiti za ismijavanje završnih klasa i metoda, treba ga konfigurirati.

Moramo dodati tekstualnu datoteku u projekt src / test / resources / mockito-extensions imenik imenovan org.mockito.plugins.MockMaker i dodajte jedan redak teksta:

mock-maker-inline 

Mockito provjerava proširenja direktorij za konfiguracijske datoteke kad se učita. Ova datoteka omogućuje ismijavanje konačnih metoda i klasa.

3. Rugajte se konačnoj metodi

Jednom kada je Mockito pravilno konfiguriran, konačna metoda može se izrugivati ​​kao i svaka druga:

@Test public void whenMockFinalMethodMockWorks () {MyList myList = new MyList (); MyList mock = lažno (MyList.class); kada (mock.finalMethod ()). thenReturn (1); assertNotEquals (mock.finalMethod (), myList.finalMethod ()); } 

Stvaranjem konkretne instance i lažne instance MyList, možemo usporediti vrijednosti koje su vratile obje verzije finalMethod () i provjerite je li pozvan lažni.

4. Rugajte se završnom predavanju

Ruganje završnoj nastavi jednako je lako kao i ruganje bilo kojoj drugoj klasi:

@Test public void whenMockFinalClassMockWorks () {FinalList finalList = novi FinalList (); FinalList mock = lažno (FinalList.class); kada (mock.size ()). thenReturn (2); assertNotEquals (mock.size (), finalList.size ()); } 

Slično gore navedenom testu, kreiramo konkretnu i lažnu instancu naše konačne klase, ismijavamo metodu i provjeravamo da li se izvrgnuta inačica ponaša drugačije.

5. Zaključak

U ovom smo brzom vodiču objasnili kako se Mockito ismijava završne satove i metode korištenjem Mockito proširenja.

Cjelovite primjere, kao i uvijek, možete pronaći na GitHubu.