最终类和最终方法-使用Mockito 2进行模拟

问题描述 投票:0回答:1

是Mockito 2提供的使用org.mockito.plugins.MockMaker(mock-maker-inline)模拟最终方法和最终类的功能,该功能通常可用(已发布)或仍处于孵化阶段。我在应用程序中使用了嘲笑核心2.23.4工件。在模拟最终的类和方法时需要建议。是否建议使用这种方法或寻找替代选项?

java unit-testing mockito junit4
1个回答
0
投票

在将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());
}

类似于上面的测试,我们为最终类创建一个具体实例和一个模拟实例,模拟一个方法并验证模拟实例的行为是否不同。

© www.soinside.com 2019 - 2024. All rights reserved.