Spring 使用@ExtendWith(MockitoExtension.class) 启动 JUnit 5 测试不工作 - 模拟为空,MockitoJUnitRunner 正在工作
Spring Boot JUnit 5 test with @ExtendWith(MockitoExtension.class) not working - mocks are null, MockitoJUnitRunner is working
我刚刚将我的项目从 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");
....
}
模拟未注入(when 语句中的 NPE)。如果我切换到旧的 JUnit 4 风格 @RunWith(MockitoJUnitRunner.class)
一切正常。
所以可能使用旧的 运行ner 或 vintage 运行ner?
如何解决此问题并使用“@ExtendWith”进行测试?我以为我可以逐步迁移 - 让新测试 运行 与 junit5 运行ner.
确保为 @Test
注释使用正确的导入:
JUnit 4:org.junit.Test
JUnit 5: org.junit.jupiter.api.Test
我刚刚将我的项目从 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");
....
}
模拟未注入(when 语句中的 NPE)。如果我切换到旧的 JUnit 4 风格 @RunWith(MockitoJUnitRunner.class)
一切正常。
所以可能使用旧的 运行ner 或 vintage 运行ner?
如何解决此问题并使用“@ExtendWith”进行测试?我以为我可以逐步迁移 - 让新测试 运行 与 junit5 运行ner.
确保为 @Test
注释使用正确的导入:
JUnit 4:
org.junit.Test
JUnit 5:
org.junit.jupiter.api.Test