Mockito单元测试——方法参数

来源:互联网 发布:linux服务器架设 鸟哥 编辑:程序博客网 时间:2024/05/29 17:11
  • 模拟方法传入参数

    在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来实现自定参数验证。

  • 0 0
    原创粉丝点击