在某些场景中,不光要对方法的返回值和调用进行验证,同时需要验证一系列交互后所传入方法的参数。那么我们可以用参数捕获器来捕获传入方法的参数进行验证,看它是否符合我们的要求。
ArgumentCaptor介绍
通过ArgumentCaptor对象的forClass(Class<T> clazz)方法来构建ArgumentCaptor对象。然后便可在验证时对方法的参数进行捕获,最后验证捕获的参数值。如果方法有多个参数都要捕获验证,那就需要创建多个ArgumentCaptor对象处理。
ArgumentCaptor的Api
argument.capture() 捕获方法参数
argument.getValue() 获取方法参数值,如果方法进行了多次调用,它将返回最后一个参数值
argument.getAllValues() 方法进行多次调用后,返回多个参数值
应用实例
@Test
public void argumentCaptorTest() {
List mock = mock(List.class);
List mock2 = mock(List.class);
mock.add("John");
mock2.add("Brian");
mock2.add("Jim");
ArgumentCaptor argument = ArgumentCaptor.forClass(String.class);
verify(mock).add(argument.capture());
assertEquals("John", argument.getValue());
verify(mock2, times(2)).add(argument.capture());
assertEquals("Jim", argument.getValue());
assertArrayEquals(new Object[]{"Brian","Jim"},argument.getAllValues().toArray());
}
首先构建ArgumentCaptor需要传入捕获参数的对象,例子中是String。接着要在verify方法的参数中调用argument.capture()方法来捕获输入的参数,之后argument变量中就保存了参数值,可以用argument.getValue()获取。当某个对象进行了多次调用后,如mock2对象,这时调用argument.getValue()获取到的是最后一次调用的参数。如果要获取所有的参数值可以调用argument.getAllValues(),它将返回参数值的List。
在某种程度上参数捕获器和参数匹配器有很大的相关性。它们都用来确保传入mock对象参数的正确性。然而,当自定义的参数匹配器的重用性较差时,用参数捕获器会更合适,只需在最后对参数进行验证即可。
分享到:
相关推荐
非信令测试下TD-LTE上行参数捕获方法,房栩正,唐晓晟,随着TD-LTE的商用和普及,其终端的快速测试显得愈发重要。目前,非信令测试已成为主流的终端测试技术。然而,在非信令测试下,上行
人工智能-机器学习-基于捕获再捕获方法的软件评审后缺陷预测问题研究.pdf
参考资料-利用单片机的捕获功能自动识别铁路RFID标签数据.zip
行业分类-设备装置-航天器对接捕获过程的位姿测量装置及柔顺控制方法.zip
行业-电子政务-微柱捕获器及捕获器光圈和电子发射源的校准方法.zip
try-catch-finally捕获异常try-catch-finally捕获异常
-32单片机利用Timer的捕获功能测量方波的频率 不明白的看注释,注释详细 代码已经封装好,更改头文件即可更改相关接口
基于PMF-FFT的GPS 捕获跟踪程序MATLAB程序 完美运行!!!!
行业-电子政务-捕获图像的方法、相关计算机程序和捕获视频的电子系统.zip
本科毕业论文---网络数据包的捕获与分析.doc
商业编程-源码-视频捕获程序代码.zip
颜色捕获器 捕获器 捕获 颜色颜色捕获器 捕获器 捕获 颜色颜色捕获器 捕获器 捕获 颜色颜色捕获器 捕获器 捕获 颜色
matlab_GPS快速捕获算法_包括串行捕获技术 _并行码相位捕获_并行频率捕获
行业分类-设备装置-IOS平台上捕获系统消息的方法和装置.zip
计算机网络原理(双语) 实验报告
电信设备-扩频通信码捕获方法及装置.zip
当然,在Windows 2000/XP(或更高版本)中,SniffPass还 允许您在没有安装任何驱动的情况下,通过使用’原始套接字’的方法捕获TCP/IP数据包。然而,这个捕捉方法有以下限制: 在Windows XP/SP1中不能捕获所有的密码...
大数据-算法-微弱GPS信号捕获算法研究.pdf
网管大师(追踪者)-数据包捕获器 V 1.281 专用版 网管必备工具