一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

用Mockito测试Java抽象类教程

时间:2015-03-22 编辑:简简单单 来源:一聚教程网

想要测试一个抽象类,有什么好办法可以不用真正继承这个类就可以进行测试吗?如果使用Mockito框架又要怎么做?

我想测试一个抽象类。当然我可以写一个继承这个抽象类的mock。我可以用mocking框架(我在用Mockito),而不是用手写mock来做吗?怎样做?

采纳答案:

以下的建议可以让你不用创建“实际”的子类来测试抽象类 —— Mock就是子类。

使用Mockito.mock(My.class, Mockito.CALLS_REAL_METHODS),然后就可以mock任何被调用的抽象method。

示例:

 代码如下 复制代码
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());
    }
}


注意:这个方法的美妙之处就是只要抽象methods没有被调用,你就不实现执行他们。

依小弟愚见,这比使用spy更加简洁,因为spy需要实例,也就是说你必须为你的抽象类创建一个可以实例化的子类。

热门栏目