代码之家  ›  专栏  ›  技术社区  ›  Fabien Thouraud

Mockito使用JUnit 5注入mocks两次

  •  1
  • Fabien Thouraud  · 技术社区  · 7 年前

    我开始测试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 在测试类和服务本身内部。

    事实上,这是因为 模拟扩展 应用两次和第二次后 myService 字段未计算为 null (显然)这意味着新创建的mocks( b )未设置为当前 我的服务 实例或新实例。

    我忘了什么吗?

    我想我自己可以处理这些嘲笑,但我认为这不是 InjectMocks 注释。

    感谢您抽出时间。

    1 回复  |  直到 7 年前
        1
  •  4
  •   VaL    7 年前

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

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