spring 集成测试很少的@SpyBean无法正常工作

txu3uszq  于 2023-03-11  发布在  Spring
关注(0)|答案(2)|浏览(236)

在我的集成测试中@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)调用正确,谁知道为什么会发生这种情况?

hyrbngr7

hyrbngr71#

@DirtiesContext在每个@Test方法上对此类情况有效。

kq0g1dla

kq0g1dla2#

对我来说,帮助下一行:

@AfterEach
    public void resetSpy() {
        reset(spyBean);
    }

来自文档:
mock忽略了任何交互和存根

相关问题