我一直在尝试使用Mockito模拟具有vararg参数的方法:
interface A {
B b(int x, int y, C... c);
}
A a = mock(A.class);
B b = mock(B.class);
when(a.b(anyInt(), anyInt(), any(C[].class))).thenReturn(b);
assertEquals(b, a.b(1, 2));
这不起作用,但是如果我改为这样做:
when(a.b(anyInt(), anyInt())).thenReturn(b);
assertEquals(b, a.b(1, 2));
尽管我在对方法进行存根时已经完全省略了varargs参数,但这仍然有效。
有什么线索吗?
Mockito 1.8.1引入了anyVararg()匹配器:
when(a.b(anyInt(), anyInt(), Matchers.<String>anyVararg())).thenReturn(b);
另请参阅历史记录:https : //code.google.com/archive/p/mockito/issues/62
弃用后编辑新语法:
when(a.b(anyInt(), anyInt(), ArgumentMatchers.<String>any())).thenReturn(b);
问题内容: 争论的Mockito匹配器(如,,,,和)从Hamcrest匹配器表现非常不同。 匹配器经常导致,即使在使用任何匹配器很长时间后执行的代码中也是如此。 匹配器遵循怪异的规则,例如,如果给定方法中的一个参数使用匹配器,则仅要求对所有参数使用Mockito匹配器。 当覆盖或使用时,匹配器可能导致 。 使用Mockito匹配器以某些方式重构代码会产生异常和意外行为,并且可能会完全失败。 为什
我试图检查字符串是否包含完全匹配。例如: String str="这是我的字符串,具有-Policy和-p" 我怎样才能做到以下几点:
问题内容: 我正在寻找一个正则表达式来匹配Java源代码中的字符串文字。 可能吗? 我的意图是用其他东西替换另一个字符串中的所有字符串。使用: 这样的事情。 问题答案: 好。那么,您想要在字符串中搜索以双引号开头和结尾的一系列字符吗? 注意非贪婪模式。
我想做一个像彩票一样的程序,中奖号码是随机生成的。 我使用了,如果用户猜到了所有6个数字。 如果用户只能猜测5位数字,我应该用什么方法从随机生成的数字中计算出5个正确的数字? 代码是: 类是,和
Mockito参数匹配器(例如、、、和)的行为与Hamcrest匹配器非常不同。 > Mockito匹配器经常导致InvalidUseOfMatchersException,即使在使用任何匹配器之后很久才执行的代码中也是如此。 Mockito匹配器受制于奇怪的规则,例如,只有当给定方法中的一个参数使用匹配器时,才要求对所有参数使用Mockito匹配器。 Mockito匹配器在重写s或使用等时会导致
问题内容: 我有这样声明的方法 这个枚举 问题:如何模拟通话?我无法比拟。 以下无效: 问题答案: 将达到目的: 附带说明:考虑使用静态导入: 模拟变得更短: