首页 >Java >java教程 >Mockito 如何帮助您在没有显式子类化的情况下测试抽象类?

Mockito 如何帮助您在没有显式子类化的情况下测试抽象类?

Susan Sarandon
Susan Sarandon原创
2024-10-30 08:01:27486浏览

How Can Mockito Help You Test Abstract Classes Without Explicit Subclassing?

Mockito 和测试抽象类

测试抽象类可能会带来挑战。通过继承手动制作模拟感觉很麻烦且多余。幸运的是,像 Mockito 这样的模拟框架提供了替代方法。

Mockito 的模拟抽象类辅助

Mockito 可以无缝模拟抽象类,同时绕过显式子类化的需要。通过利用 Mockito.mock(My.class, Answers.CALLS_REAL_METHODS),您可以创建一个继承自抽象类的模拟。此模拟既充当子类又充当部分模拟。

避免抽象方法实现

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>

在此示例中,模拟是使用 Mockito.mock() 创建的,Answers.CALLS_REAL_METHODS 确保方法 methodUnderTest() 按照抽象类中的定义运行,即使未实现 methodIDontCareAbout() 。这种方法简化了测试过程,并且无需手动创建子类。

以上是Mockito 如何帮助您在没有显式子类化的情况下测试抽象类?的详细内容。更多信息请关注PHP中文网其他相关文章!

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