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中文网其他相关文章!