带有 @ExtendWith(MockitoExtension.class) 的 Spring Boot JUnit 5 测试不起作用 - 模拟为空,MockitoJUnitRunner 正在工作

der*_*itz 4 junit mockito spring-boot junit5

我刚刚将我的项目从 Spring Boot 2.1 迁移到 2.3,因此现在有 JUnit 5(带有 Vintage)(还包括版本 3.3.3 的 mockito-core 和 mockito-junit-jupiter)。虽然所有 JUnit 4 测试工作正常,但我的第一个 JUnit 5 测试工作不正常:

@ExtendWith(MockitoExtension.class)
public class SomeTest {

    @InjectMocks
    private Some to;

    @Mock
    private SomeProperties properties;

    @Test
    public void applied() {
         ....
         //properties is null -> NPE
         when(properties.getSome()).thenReturn("some");
         ....
    }
Run Code Online (Sandbox Code Playgroud)

没有注入模拟(when 语句中的 NPE)。如果我切换到旧的 JUnit 4 样式,@RunWith(MockitoJUnitRunner.class)一切正常。

那么可能使用的是旧跑步者还是复古跑步者?

如何解决此问题并使用“@ExtendWith”进行测试?我以为我可以逐步迁移 - 让新测试使用 junit5 runner 运行。

Wim*_*uwe 14

确保为@Test注释使用正确的导入:

  • JUnit 4: org.junit.Test

  • JUnit 5: org.junit.jupiter.api.Test

  • 谢谢你!这确实很容易被忽视。 (3认同)