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);
    }
}
时间: 2024-11-08 15:34:04

EassyMock实践 捕获参数的相关文章

rrdtool 实践

rrdtool 实践 rrdtool 参数比较多,如果直接看文档,不知从何入手,直接从例子入手这样容易理解,模拟网卡流量 1. 创建数据库 rrdtool create Flow.rrd --start $(date +%s) --step 1 DS:eth0_in:GAUGE:1:0:U DS:eth0_out:GAUGE:1:0:U RRA:LAST:0.5:1:2 RRA:LAST:0.5:1:4 RRA:AVERAGE:0.5:1:600 RRA:AVERAGE:0.5:6:700 RR

python注释、脚本参数、字节码

python注释.脚本参数.字节码 --道心 python安装 1.下载安装包 https://www.python.org/downloads/ 2.安装 默认安装路径:C:\python27 3.配置环境变量 [右键计算机]-->[属性]-->[高级系统设置]-->[高级]-->[环境变量]-->[在第二个内容框中找到 变量名为Path 的一行,双击] --> [Python安装目录追加到变值值中,用 : 分割] 如:原来的值;C:\python27,切记前面有分号

STM32学习笔记11(通用定时器作为输入捕获2)

通用定时器作为输入捕获的使用.我们将用 TIM5 的通道 1 (PA0)来做输入捕获,捕获 PA0 上高电平的脉宽(用 WK_UP 按键输入高电平),通过串口打印高电平脉宽时间 输入捕获简介 输入捕获模式可以用来测量脉冲宽度或者测量频率. STM32 的定时器,除了 TIM6 和 TIM7,其他定时器都有输入捕获功能.STM32 的输入捕获,简单的说就是通过检测 TIMx_CHx 上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的

Python注释和脚本参数

单行注释: # 多行注释:"""为开始,"""结束 捕获参数:import sys sys.argv   表示argv功能在sys模块里边 Eg:hello.py #_*_ coding: utf-8 _*_ import sys print sys.argv print '你好,世界!' 执行结果: E:\>pythonhello.py localhost:8001 ['hello.py','localhost:8001'] 你好,世界!

STM32F4——定时器原理及应用(中断、输入捕获、PWM输出)

一.简介: 不同的STM32系列有不同数量的定时器,针对现在学习的STM32F40x系列总共有14个定时器,针对这14个定时器可以将其分为3类,高级定时器.通用定时器和基本定时器,三种定时器大同小异,下边会针对通用定时器来介绍定时器的原理和应用.对于通用定时器根据位数和计数方式的不同又可以分为3类,相关分类的图表如下: 二.应用: 1.更新:计数器的上溢或下溢.2.事件触发.3.输入捕获.4.输出比较.5.支持针对定位的增量编码和霍尔传感器电路.5.触发输入作为外部时钟或按周期电源管理.下边会针

STM32——输入捕获实验原理及配置步骤

输入捕获实验原理及配置步骤 一.输入捕获概念 STM32的输入捕获,简单的说就是通过检测 TIMx_CHx (定时器X的通道X)上的 边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT) 存放到对应的通道的捕获/比较寄存器(TIMx_CCRx)里面,完成一次捕获.同时还可以配置捕获时是否触发中断/DMA 等. 二.输入捕获流程: 例如,要配置向上计数器在T12输入端的上升沿计数,使用下列步骤: 1.配置TIMx_CCMR1寄存器CC2S='01',配置通

输入捕获

#include "timer.h"#include "led.h"#include "usart.h" //TIM14 PWM部分初始化 //PWM输出初始化//arr:自动重装值//psc:时钟预分频数void TIM14_PWM_Init(u32 arr,u32 psc){ //此部分需手动修改IO口设置 GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_Tim

从FindBugs中学Java【一】

findbug 这里[中文列表]: http://svn.codehaus.org/sonar-plugins/tags/sonar-l10n-zh-plugin-1.1/src/main/resources/org/sonar/l10n/findbugs_zh.properties rule.findbugs.IMSE_DONT_CATCH_IMSE.name=不良实践 - 捕获可疑IllegalMonitorStateException rule.findbugs.BX_BOXING_IMM

findBugs英文代号的对照表

findBugs错误英文翻译rule.findbugs.IMSE_DONT_CATCH_IMSE.name=不良实践 - 捕获可疑IllegalMonitorStateException rule.findbugs.BX_BOXING_IMMEDIATELY_UNBOXED.name=性能 - 基本类型包装之后立刻解包 rule.findbugs.IJU_SETUP_NO_SUPER.name=使用错误 - TestCase定义的setUp没有调用super.setUp() rule.findb