首页 > 解决方案 > 带有少量集成测试的 @SpyBean 无法正常工作

问题描述

我的集成测试中有 @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) 是否正确调用。谁知道为什么会这样?

标签: springspring-bootmockitospring-testspring-boot-test

解决方案


@DirtiesContext在这种情况下,每种@Test方法都对我有用。


推荐阅读