以下建议让你在不创建“真实”子类的情况下测试抽象类-Mock 是子类。
使用
Mockito.mock(My.class, Mockito.CALLS_REAL_METHODS),然后模拟所有被调用的抽象方法。
例:
public abstract class My { public Result methodUnderTest() { ... } protected abstract void methodIDontCareabout();}public class MyTest { @Test public void shouldFailonNullIdentifiers() { My my = Mockito.mock(My.class, Mockito.CALLS_REAL_METHODS); Assert.assertSomething(my.methodUnderTest()); }}注意:此方法的好处是,你不具备实现的抽象方法,只要他们永远不会被调用。
在我看来,这比使用间谍更整洁,因为间谍需要一个实例,这意味着你必须创建抽象类的可实例化子类。



