| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
n7w77
10年前发布

使用Mockito测试抽象类

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

本文来自StackOverflow社区的问答。

问题:

我想测试一个抽象类。当然我可以写一个继承这个抽象类的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需要实例,也就是说你必须为你的抽象类创建一个可以实例化的子类。

原文链接: http://stackoverflow.com/questions/1087339/using-mockito-to-test-abstract-classes 翻译: ImportNew.com - Brook
译文链接: http://www.importnew.com/15353.html

 本文由用户 n7w77 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1426775384132.html
Mockito 单元测试