該系列文章翻譯自https://www.baeldung.com/mockito-series
我們?yōu)镸yList類增加了一個(gè)final方法棺滞,并且擴(kuò)展了一個(gè)final類拄显,如下:
public class MyList extends AbstractList {
final public int finalMethod() {
return 0;
}
}
public final class FinalList extends MyList {
@Override
public int size() {
return 1;
}
}
1. 配置
為了讓Mockito能夠模擬final類和方法蚕苇,需要做額外的配置。我們需要在項(xiàng)目的src/test/resources/mockito-extensions 目錄下添加文件org.mockito.plugins.MockMaker,并在文件中添加一行
mock-maker-inline
2. 模擬final方法
@Test
public void whenMockFinalMethodMockWorks() {
MyList myList = new MyList();
MyList mock = mock(MyList.class);
when(mock.finalMethod()).thenReturn(1);
assertNotEquals(mock.finalMethod(), myList.finalMethod());
}
3. 模擬final類
@Test
public void whenMockFinalClassMockWorks() {
FinalList finalList = new FinalList();
FinalList mock = mock(FinalList.class);
when(mock.size()).thenReturn(2);
assertNotEquals(mock.size(), finalList.size());
}