单元测试框架JMock与Mockito的用法比较

发表于:2010-8-03 13:37

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

分享:
  六、Mockito的测试用例

public class MainTstObjectMockitoTest {  
    // 指定Mock的对象  
    @Mock 
    private MayMockObject mayMockObject;  
     
    private MainTstObject mainTstObject;  
     
    @Before 
    public void setUp() {  
        MockitoAnnotations.initMocks(this); // 声明测试用例类  
         
        this.mainTstObject = new MainTstObject();  
        this.mainTstObject.setMayMockObject(this.mayMockObject);  
    }  
     
    @Test 
    public void process() {  
        String str1 = "Mockito返回字符串。";  
        String str2 = "Mockito返回字符串。";  
         
        Mockito.when(this.mayMockObject.getString(str2)).thenReturn(""); // Mock返回值  
         
        String ret = this.mainTstObject.create(str1, str2);  
        Assert.assertEquals(ret, str1);  
    }  
     
    @After 
    public void tearDown(){  
    }  


  七、最后

  从两个测试用例可以看出,JMock和Mockito在用法上的一些区别:

  1、对于要Mock的对象,JMock要显示指出来【this.mayMockObject = this.context.mock(MayMockObject.class);】;

  而Mockito只是简单加上注释【@Mock】,然后声明下测试用例类即可【MockitoAnnotations.initMocks(this);】。

  2、对于方法的模拟,JMock显得更加复杂了

this.context.checking(new Expectations()
{
        {
            oneOf(mayMockObject).getString(str2);
            will(returnValue(""));
        }
});

  而Mockito只要简单的一行代码就行【Mockito.when(this.mayMockObject.getString(str2)).thenReturn("");】。

  从上可以看出,Mockito的代码行更少,更加简洁,个人比较喜欢用Mockito,简洁易记!

  另外需要注意的是:JMock只能Mock接口,也就是上面的例子中【MayMockObject】只能为接口,不能为实体类;而Mockito就没有这个限制。

  当然,我们既然用Mock,就是因为只知接口,而不知其具体实现,这样说来,JMock只能Mock接口不能算是Mockito的一个优点了。

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号