zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    C语言堆栈入门——堆和栈的区别(转)
    3--STM32 USB-三个HID-interface 复合(组合)设备的代码实现-基于固件库(原创)
    Spring 1 控制反转、依赖注入
    Java反射
    java多线程
    (六) 访问控制
    final关键字
    JSP(二):JSP九大内置对象、四个作用域对象
    JSP(一):JSP概要
    Servlet(九):web.xml文件和server.xml文件
  • 原文地址:https://www.cnblogs.com/csu_xajy/p/4255408.html
Copyright © 2011-2022 走看看