设置Mockito返回除特定值以外的任何整数

时间:2018-04-11 14:53:54

标签: java mockito

具体来说,我试图返回任何不等于1的整数。目前我有:

Mockito.when(dsIn.getItemNumber(1, "COLUMN")).thenReturn(0.0);

但我想要像:

Mockito.when(dsIn.getItemNumber(1, "COLUMN")).thenReturn(anyInt() != 1);

2 个答案:

答案 0 :(得分:1)

您实际上并不希望每次运行测试时测试用例都不同。您希望它们具有可重现性,以便当您的测试失败,然后重新运行测试时,您将获得与之前相同的失败(出于同样的原因)。

如果您想确保int以外的每个 1有效,您可以在所有值上写一个for循环,或者您可以选择一些"有趣的"价值观,例如02-1Integer.MAX_VALUE等。无论哪种方式,您应该明确关于您的价值是什么?重新测试,而不是隐含("某些值不是这个")。

或者,您可以随机选择一个数字并对其进行硬编码。它仍然是"随机":

XKCD: "RFC 1149.5 specifies 4 as the standard IEEE-vetted random number."

答案 1 :(得分:0)

最佳解决方案是获取一个范围从2到任意值的随机数。

这将是这样的:

Random rand = new Random();
int  n = rand.nextInt(50) + 2;
Mockito.when(dsIn.getItemNumber(1, "COLUMN")).thenReturn(n);

有了这个,你会得到一个2到50之间的随机数。