在测试之间重置Mockito模拟,作为Spring bean提供?

我有一个使用Spring的依赖注入的Java应用程序.我想模拟一个bean,并验证它是否接收到某些方法调用.

问题是Mockito没有在测试之间重置模拟,所以我无法正确验证方法调用.

我的单位在测试中:

public class MyClass {
  @Resource
  SomeClientClass client;

  public void myMethod() {
    client.someMethod();
  }
}

单元测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = UnitTestConfig.class)
public class MyClassTest {
  @Resource
  SomeClientClass client;

  @Test
  public void verifySomething() {
    // ...
    Mockito.verify(client).publish();
  }
}

最后,

@Configuration
public class UnitTestConfig {
  @Bean
  SomeClientClass client() {
    return Mockito.mock(SomeClientClass.class);
  }
}

虽然我可以通过在测试之间手动重置模拟来解决这个问题,但我想知道是否有更清洁/更惯用的方法.

解决方法:

我必须在开始时添加它:

@BeforeEach
void setup() {
     Mockito.reset(...mockBeans);
     ...
}
上一篇:在Android上使用PowerMockito模拟静态方法


下一篇:java – 如何在我的示例中模拟一个具有静态字段的类?