Подигравайте финални класове и методи с Mockito

1. Общ преглед

В тази кратка статия ще се съсредоточим върху това как да се подиграваме с крайните класове и методи - използвайки Mockito.

Както и при останалите членове фокусирани върху рамката Mockito (като Mockito Уверете се, Mockito Когато / Тогава и Mockito на Макети Методи) ще използваме MyList класа показани по-долу, тъй като сътрудник в тестовете.

Ще добавим нов метод за този урок:

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

И ние също ще го разширим с последен подклас:

public final class FinalList extends MyList { @Override public int size() { return 1; } } 

2. Конфигурирайте Mockito за окончателни методи и класове

Преди Mockito да може да се използва за подигравка на крайните класове и методи, трябва да бъде конфигуриран.

Трябва да добавим текстов файл към директорията src / test / resources / mockito-extensions на проекта с име org.mockito.plugins.MockMaker и да добавим един ред текст:

mock-maker-inline 

Mockito проверява директорията с разширения за конфигурационни файлове, когато е заредена. Този файл позволява подигравка на крайните методи и класове.

3. Подигравайте се с окончателен метод

След като Mockito е конфигуриран правилно, последният метод може да бъде подиграван като всеки друг :

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

Чрез създаването на конкретен екземпляр и фалшив екземпляр на MyList , можем да сравним стойностите, върнати от двете версии на finalMethod (), и да проверим дали е извикан макетът .

4. Подигравайте се с финален клас

Подиграването с финален клас е също толкова лесно, колкото и подиграването на всеки друг клас:

@Test public void whenMockFinalClassMockWorks() { FinalList finalList = new FinalList(); FinalList mock = mock(FinalList.class); when(mock.size()).thenReturn(2); assertNotEquals(mock.size(), finalList.size()); } 

Подобно на горния тест, ние създаваме конкретен екземпляр и фиктивен екземпляр на нашия окончателен клас, подиграваме метод и проверяваме дали подиграваният екземпляр се държи по различен начин.

5. Заключение

В този бърз урок разгледахме как да се подиграваме с окончателните класове и методи с Mockito, като използваме разширение Mockito.

Пълните примери, както винаги, могат да бъдат намерени в GitHub.