首页  >  文章  >  Java  >  Mockito 可以模拟抽象类吗?

Mockito 可以模拟抽象类吗?

Patricia Arquette
Patricia Arquette原创
2024-11-02 13:30:03981浏览

Can Mockito Mock Abstract Classes?

使用 Mockito 模拟抽象类

测试抽象类时,手动制作模拟可能会很不方便。 Mockito 提供了更高效的解决方案。

查询:

是否可以使用 Mockito 来模拟抽象类,而不是手动创建模拟?如果是,怎么做?

答案:

Mockito 提供了模拟抽象类的选项,而无需创建具体的子类。使用 Mockito.mock(My.class, Answers.CALLS_REAL_METHODS),您可以创建一个部分模拟,其中抽象方法由模拟本身处理。

例如:

<code class="java">public abstract class My {
    public Result methodUnderTest() { ... }
    protected abstract void methodIDontCareAbout();
}
 
public class MyTest {
    @Test
    public void shouldFailOnNullIdentifiers() {
        My my = Mockito.mock(My.class, Answers.CALLS_REAL_METHODS);
        Assert.assertSomething(my.methodUnderTest());
    }
}</code>

注意使用 CALLS_REAL_METHODS 时,除非在测试中显式覆盖,否则所有实际方法都会被执行。这种方法比使用间谍提供了更大的灵活性,间谍需要实例化抽象类的子类。

以上是Mockito 可以模拟抽象类吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn