Mockito单元测试——方法参数

  • 模拟方法传入参数

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值