【发布时间】: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
-
你最终找到方法了吗?