在我的集成测试中@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
)调用正确,谁知道为什么会发生这种情况?
2条答案
按热度按时间hyrbngr71#
@DirtiesContext
在每个@Test
方法上对此类情况有效。kq0g1dla2#
对我来说,帮助下一行:
来自文档:
mock忽略了任何交互和存根