小编Fab*_*aud的帖子

Mockito 使用 JUnit 5 两次注入模拟

我开始测试 Spring Boot 2.0.0,我遇到了 Mockito 2.17.0 和 JUnit 5.1.0 的奇怪行为。

从我所见,将模拟注入所需 bean 的方法是@ExtendWithMockitoExtension类中使用新注释。

所以,这是我的测试课:

@ExtendWith(MockitoExtension.class)
class MyServiceTest {

    @Mock
    private A a;

    @Mock
    private B b;

    @InjectMocks
    private MyService myService;

    // The test methods are omitted
}
Run Code Online (Sandbox Code Playgroud)

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

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

我是不是忘记了什么?

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

感谢您的时间。

java mockito spring-boot junit5

1
推荐指数
1
解决办法
602
查看次数

标签 统计

java ×1

junit5 ×1

mockito ×1

spring-boot ×1