我开始测试Spring Boot 2.0.0,我遇到了Mockito 2.17.0和JUnit 5.1.0的奇怪行为。
从我所看到的,将注入到所需bean中的模拟的方法是使用@ExtendWith
类的新MockitoExtension
注释。
所以,这是我的测试类:
@ExtendWith(MockitoExtension.class)
class MyServiceTest {
@Mock
private A a;
@Mock
private B b;
@InjectMocks
private MyService myService;
// The test methods are omitted
}
这似乎很好,但我发现模拟没有按预期调用,我发现这是由于测试类和服务中的a
和b
的不同实例本身。
实际上,这是因为MockitoExtension
被应用了两次而第二次被应用,myService
字段未被评估为null
(显然),这意味着新的已创建的模拟(a
和b
)未设置为当前myService
实例或新实例。
我忘记了什么吗?
我认为我可以自己处理模拟,但我认为这不是InjectMocks
注释的目的。
感谢您的时间。
答案 0 :(得分:4)
看起来你遇到了Mockito问题:mockito#1346。
它已经修复,因此您可以等待公开发布或使用dev build 2.17.2:https://bintray.com/mockito/maven/mockito-development/2.17.2(release notes)