美文网首页
Android下Mockito配合单元测试的使用

Android下Mockito配合单元测试的使用

作者: liucloo | 来源:发表于2016-04-30 00:28 被阅读334次

2016年4月11日

[TOC]

1、引入Mockiteo

构建系统选择Gradle,引入Jcenter库的Mockito,在模块dependencies加入testCompile "org.mockito:mockito-core:1.10.19"

2、入门示例

1、为get方法设置属性

Mockiteo无法为final static private修饰的方法设置属性。Mockiteo可以为有返回值的方法设置返回值。

@Test
public void Testing() throws Exception {
    List mock = Mockito.mock(List.class);
    //模拟返回值
    Mockito.when(mock.get(0)).thenReturn(person1);
   
    System.out.println(mock.get(0).toString());
}

结果

Person{username='liucl', age=123}

2、查看方法有没有执行

@Test
public void methodInvokeTimeTest3() throws Exception{
    Person mock = Mockito.mock(Person.class);

    mock.setAge(123);
    mock.setAge(123);
    mock.setAge(123);

    Mockito.verify(mock).setAge(123);//执行过了
    Mockito.verify(mock,Mockito.times(3)).setAge(123);//执行三次
    Mockito.verify(mock,Mockito.atLeast(2)).setAge(123); //至少两次
}

通过Mockito的verify的方法可以验证mock类的方法有么有执行,执行过多少次。
当然你也可以模糊匹配

@Test
public void argumentMatcherTest2() throws Exception{
    //验证Map
    Map<Integer,String> map = Mockito.mock(Map.class);
    Mockito.when(map.put(Mockito.eq(1),Mockito.anyString())).thenReturn("String"); //把Mockito.eq(1)换成1会报错

    map.put(1,"2");

    Mockito.verify(map);
    }

这里用一个Map,模糊匹配他的key,这里不能直接写1,会报错。应该写Mockito.eq(1)

3、监视无返回值的方法

在上面1中,通过when来为有返回值的方法设置返回值。那么这里来监视无返回值的方法执行情况

@Test
public void mockTest2() throws Exception{
    List mock = Mockito.mock(List.class);
    Mockito.doNothing().when(mock).clear();
    mock.clear();
    mock.clear();

    Mockito.verify(mock,Mockito.times(2)).clear();
}

上面监视List的clear方法执行情况。

相关文章

网友评论

      本文标题:Android下Mockito配合单元测试的使用

      本文链接:https://www.haomeiwen.com/subject/mnlkrttx.html