我在集成测试中@SpyBean字段的行为很奇怪。例如,我有一些集成测试:
package a;
@SpringBootTest
public class A {
@SpyBean
public MySpyBeanCandidate spyBean;
@Test
public void test1 {
// some work
Mockito.verify(spyBean, Mockito.atLeastOnce()).methodName(eq("String value"), anyString());
}
}
package a;
@SpringBootTest
public class B {
@SpyBean
public MySpyBeanCandidate spyBean;
@Test
public void test2 {
// some work
Mockito.verify(spyBean, Mockito.atLeastOnce()).methodName(eq("String value"), anyString());
}
}
问题是,当我尝试分别执行它们时,它们会成功执行,但是如果我将它们一起运行,则在第二个测试中,Mockito.verify(..)将抛出异常:Wanted but not invoked
。但是我已经调试它并检查了正确调用的方法(methodName
)。谁知道为什么会这样?
在这种情况下,每个@DirtiesContext
方法的[@Test
都对我有用。