从你的问题中不清楚为什么你会想要这样的事情.这个答案中的代码不是很好的做法,我不会推荐它.
第一个问题是你的方法返回,void
所以你不能用它来存根Mockito.when
.你需要使用Mockito.doWhen
.
在这段代码中,我用来Mockito.doAnswer
在答案部分内编写自定义代码:
@Test public void test1() { int[] number = { 0 }; Simple simple = Mockito.mock(Simple.class); Mockito.doAnswer(new Answer() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { number[0]++; return null; } }).when(simple).doSomething(); }
诀窍是将数字存储在最终变量(在本例中为数组)中,并在答案部分中增加其唯一值.每次doSomething()
都会被调用,它会递增,你将在里面计数number[0]
.
使用Java 8可以使相同的代码更紧凑:
Mockito.doAnswer(invocation -> number[0]++).when(simple).doSomething();