您的位置:首页 > 其它

Mockito单元测试——方法参数

2016-03-29 21:43 232 查看
模拟方法传入参数

在Mockito测试中我们可以指定我们对方法调用时候的参数,如下写法:

when(list.get(0)).thenReturn("a");

        Assert.assertEquals("a", list.get(0));

但有时候在实际开发中,我们可能需要模拟出入参,那么我们可以使用Mockito内置的一些方法,如下实例:

    @Test

    public void testAnyArg(){

        

        when(list.get(anyInt())).thenReturn("a");

        System.out.println(list.get(234));

    }

如上代码所示,我们可以使用anyInt来模拟任意类型的int值输入。Mockito还提供了类似的anyByte等方法。

利用ArgumentCaptor捕获方法参数进行验证

在一些测试场景中,我们可以使用ArgumentCaptor来验证我们的传入参数是否正确。

在Mockito中校验方法参数是否正确,实际还是调用Java对象的equals方法。如下代码,我们可以校验对应的List参数。

@Test

    public void testArgus() {

        list.add("a");

        // 获取需要捕获的方法参数

        ArgumentCaptor<String> argument = ArgumentCaptor.forClass(String.class);

        //verify方法的参数中调用argument.capture()方法来捕获输入的参数

        verify(list).add(argument.capture());

        //argument中存入了我们之前对方法调用的值

        Assert.assertEquals("a", argument.getValue());

        

        list.add("b");

        verify(list, times(2)).add(argument.capture());

        Assert.assertArrayEquals(new Object[]{"a", "a", "b"}, argument.getAllValues().toArray());

    }

在测试中我们也可以通过抽象类ArgumentMatcher来实现自定参数验证。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: