EassyMock实践 捕获参数

     在测试接口过程中,有时我们希望知道自己期望传入的参数是什么,以此来判断传入参数的正确行,这时就需要用到EassyMock的capture方法.该方法能捕获传入的参数存放到自定义的变量中,然后用捕获的参数与期望的参数进行对比,从而判断调用接口时使用的参数是否正确.

下面用例子演示一下:

要测试的接口

package MockTestWithCapture;

public interface Service {
    void handle(int arg, int[] array);
}

 

测试的类

package MockTestWithCapture;

import static org.junit.Assert.*;
import org.easymock.*;
import org.junit.*;
import static org.easymock.EasyMock.*;

public class TestService {

    @Test
    public void test() {
        
        Service mockService = createMock("mockService", Service.class);
        
        //首先定义要用来存放捕获参数的变量
        Capture<Integer> capArg = new Capture<Integer>();
        Capture<Object> capArray = new Capture<Object>();//Capture没有对应数组的,所以只能用Object存放数组,之后在强制性转换
        
        //这里是重点,需要调用capture方法捕获实际传入的参数
        //注意这里第一个参数必须用captureInt方法,不能用capture方法,否则因为传入参数类型不匹配而报错
        mockService.handle(captureInt(capArg), (int[])capture(capArray));
        
//        下面的写法也争取
//        int a1 = captureInt(capArg);
//        int[] a2 = (int[])capture(capArray);
//        mockService.handle(a1, a2);

        replay(mockService);
        
        int arg = 100;
        int[] array = {1,2,3,4};
        
        //实际调用接口传入的参数是arg和array
        mockService.handle(arg, array);
        
        //捕获实际传入的参数
        int actual1 = capArg.getValue();
        int[] actual2= (int[])capArray.getValue();
        
        //这里我们将捕获的参数进行校验
        assertEquals(arg, actual1);
        assertArrayEquals(array, actual2);
        
        verify(mockService);
    }
}

 

转载于:https://www.cnblogs.com/csu_xajy/p/4255408.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值