Mockito使用JUnit 5

时间:2018-04-01 23:54:11

标签: java spring-boot mockito junit5

我开始测试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
}

这似乎很好,但我发现模拟没有按预期调用,我发现这是由于测试类和服务中的ab的不同实例本身。

实际上,这是因为MockitoExtension被应用了两次而第二次被应用,myService字段未被评估为null(显然),这意味着新的已创建的模拟(ab)未设置为当前myService实例或新实例。

我忘记了什么吗?

我认为我可以自己处理模拟,但我认为这不是InjectMocks注释的目的。

感谢您的时间。

1 个答案:

答案 0 :(得分:4)

看起来你遇到了Mockito问题:mockito#1346

它已经修复,因此您可以等待公开发布或使用dev build 2.17.2:https://bintray.com/mockito/maven/mockito-development/2.17.2release notes