我的问题可以通过一个简单的例子来描述。这是我的类:
public class App
{
void doFirst(String s){
if(s.equals("hello")){
return;
}
doSecond(s);
}
void doSecond(String s){
}
}
以下是我的测试:
public void testApp() {
App a = spy(new App());
ArgumentCaptor<String> argument = ArgumentCaptor.forClass(String.class);
doNothing().when(a).doSecond(argument.capture());
a.doFirst("bye");
assertEquals("bye", argument.getValue());
a.doFirst("hello");
assertEquals(null, argument.getValue());
}
问题在于第二个断言失败,因为argument.getValue()的值来自于对doFirst的先前调用。我是否可以在第一个断言后清除argument,以便在到达第二个断言时它将为null?
谢谢。
ArgumentCaptor
吗? - Alexander Tokarev