在测试接口过程中,有时我们希望知道自己期望传入的参数是什么,以此来判断传入参数的正确行,这时就需要用到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);
}
}
分享到:
相关推荐
在IT领域,尤其是在系统管理和软件开发中,命令行参数捕获工具扮演着至关重要的角色。这类工具主要用于跟踪、记录和分析应用程序在启动时接收的命令行参数,这对于调试、自动化脚本编写以及理解软件行为非常有帮助。...
GPS信号捕获参数分析与仿真.pdf
在嵌入式系统开发中,STM32F103微控制器是一款广泛应用的单片机,它具有丰富的外设接口,如PWM(脉宽调制)和输入捕获...通过实践和调试,我们可以深入理解STM32F103的PWM和输入捕获特性,提高嵌入式系统设计的能力。
本资源包"matlab-GPS快速捕获算法-包括串行捕获技术 -并行码相位捕获-并行频率捕获"专注于使用MATLAB实现这一过程的高效算法。MATLAB作为一种强大的数学和计算环境,非常适合进行这样的仿真和分析。 串行捕获技术是...
普通的输入捕获可以使用定时器的四个通道,一路捕获占用一个捕获寄存器,而 PWM 输入则只能使用两个通道,即通道 1 和通道 2, 且一路 PWM 输入要占用两个捕获寄存器,一个用于捕获周期,一个用于捕获占空比。...
标题 "VFP9解决VFW捕获读取与设置问题" 涉及的是使用Visual FoxPro 9(VFP9)处理Video for Windows (VFW) 捕获参数的技术。VFW 是一个Windows API,用于处理视频捕获、编辑和播放。在这个场景中,开发者遇到的问题...
通过精确配置定时器参数、设置中断服务程序以及处理捕获的数据,我们可以实现高效且精确的超声波测距系统。在实际项目中,还需要考虑抗干扰措施、电源稳定性以及硬件设计等多个因素,以确保系统的可靠性和准确性。
在这个实验中,QT被用来构建用户界面,允许用户输入参数并显示捕获的数据包信息。 10. **数据包解析**:捕获到数据包后,需要解析其头部信息。这通常涉及到对二进制数据的理解和转换为可读格式,以便用户理解网络...
【蓝桥杯嵌入式PWM捕获】是一个在嵌入式系统开发中常见的技术实践,主要涉及微控制器的定时器和模拟数字转换功能。在这个项目中,我们将关注如何使用CT117E开发板来实现PWM(脉宽调制)的输出与捕获功能。CT117E是一...
通过阅读这些资料,开发者可以更好地理解和实践STM32的信号捕获功能。 总的来说,STM32F103C8T6的信号捕获功能强大且灵活,适用于各种实时信号处理应用场景。通过合理的寄存器配置和库函数调用,开发者可以轻松地...
还有基于自适应滤波器的算法,如Adaptive Least Mean Squares (LMS) 或Recursive Least Squares (RLS) 算法,它们可以动态调整滤波器参数以适应信号变化。 4. **Trackdemo**: "Trackdemo"很可能是提供了一个GPS...
5. 分析捕获的数据,计算信号的频率、脉宽等参数。 实验过程中,确保正确配置中断优先级和NVIC设置,以确保及时响应捕获事件。同时,注意STM32的时钟树配置,理解不同时钟源如何影响输入捕获的精度和实时性。 通过...
- 脉冲宽度调制(PWM)控制:通过捕获中断测量脉冲宽度,进而调整电机速度或其他参数。 - 通信协议同步:捕获中断可用于确定串行通信的起始和停止位,以确保数据正确传输。 - 事件计数:记录传感器产生的脉冲次数...
在这个函数中,可以指定触发事件(上升沿或下降沿),以及捕获的输入滤波器参数,以减少噪声影响。 在配置完成后,通过TIM_ICCmd()函数启用输入捕获功能。一旦捕获事件发生,定时器的寄存器会记录下事件发生时刻的...
3. **设置参数**:根据需求调整捕获参数,如帧率、分辨率等。 4. **启动预览**:调用videoCap组件的StartPreview方法开始视频预览。 5. **处理帧数据**:利用OnCaptureFrame事件处理每一帧捕获到的数据,可以进行...
通过比较两次捕获事件之间的定时器值变化,可以计算出输入信号的周期、频率或者脉宽等参数。 实验步骤可能包括以下几点: 1. 初始化:首先,我们需要设置STM32的工作环境,包括初始化HAL库、设置系统时钟、配置...
在"10 输入捕获实验"中,可能包含了如何设置这些参数的示例代码,以及如何读取并处理捕获的高电平时间。在实际应用中,捕获到的高电平时间可能用于计算频率、脉宽调制(PWM)信号分析、电机控制中的转速检测等各种场景...
1. 初始化定时器:在库函数版本的开发中,我们需要包含`stm32f0xx_tim.h`头文件,并调用`TIM_TimeBaseInit()`函数初始化定时器的基本参数,如预分频器、计数模式等。 2. 配置输入捕获通道:使用`TIM_ICInit()`或`...
STM8S003是一款基于8位STM8系列的微控制器,由意法半导体(STMicroelectronics)生产。在这款单片机上实现定时器功能是进行各种实时控制...通过不断实践和调试,可以更好地理解和掌握STM8S003的定时器及输入捕获特性。