是Mockito 2提供的使用org.mockito.plugins.MockMaker(mock-maker-inline)模拟最终方法和最终类的功能,该功能通常可用(已发布)或仍处于孵化阶段。我在应用程序中使用了嘲笑核心2.23.4工件。在模拟最终的类和方法时需要建议。是否建议使用这种方法或寻找替代选项?
在将Mockito用于模拟最终类和方法之前,需要对其进行配置。
我们需要将一个文本文件添加到项目的src / test / resources / mockito-extensions目录中,名为org.mockito.plugins.MockMaker,并添加一行文本:
mock-maker-inline
Mockito在加载扩展目录时会检查扩展目录中是否包含配置文件。该文件可以模拟最终方法和类。
模拟最终方法:
一旦正确配置了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()的两个版本返回的值,并验证是否调用了该模拟。
模拟期末班:
模拟最终课程与模拟其他任何课程一样容易:
@Test
public void whenMockFinalClassMockWorks() {
FinalList finalList = new FinalList();
FinalList mock = mock(FinalList.class);
when(mock.size()).thenReturn(2);
assertNotEquals(mock.size(), finalList.size());
}
类似于上面的测试,我们为最终类创建一个具体实例和一个模拟实例,模拟一个方法并验证模拟实例的行为是否不同。