【问题标题】:Resetting Mockito mocks, provided as Spring beans, between tests?在测试之间重置作为 Spring bean 提供的 Mockito 模拟?
【发布时间】:2016-04-28 07:38:39
【问题描述】:

我有一个使用 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);
  }
}

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

【问题讨论】:

  • 尝试在你的测试类中使用@DirtiesContext
  • 你最终找到方法了吗?

标签: spring mockito


【解决方案1】:

我必须在开头添加这个:

@BeforeEach
void setup() {
     Mockito.reset(...mockBeans);
     ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 2012-06-03
    • 2021-09-18
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多