如何在 Mockito 和 JUnit 5 中使用注入(inject)?
在 JUnit4 中,我可以只使用 @RunWith(MockitoJUnitRunner.class)
注释。在 JUnit5 中是不是没有 @RunWith
注解?
最佳答案
有多种使用 Mockito 的方法 - 我将一一介绍。
手动
使用 Mockito::mock
手动创建模拟无论 JUnit 版本(或测试框架)如何,都可以工作。
基于注释
使用 @Mock -注释和对MockitoAnnotations::initMocks
的相应调用
至create mocks无论 JUnit 版本如何(或测试框架,但 Java 9 可能会在此处干扰,具体取决于测试代码是否最终在模块中)。
Mockito 扩展
JUnit 5 有 a powerful extension model和 Mockito 最近在组/工件 ID org.mockito : mockito-junit-jupiter 下发布了一个.
您可以通过将 @ExtendWith(MockitoExtension.class)
添加到测试类并使用 @Mock
注释模拟字段来应用扩展。来自 MockitoExtension
的 JavaDoc:
@ExtendWith(MockitoExtension.class)
public class ExampleTest {
@Mock
private List list;
@Test
public void shouldDoSomething() {
list.add(100);
}
}
The MockitoExtension documentation描述了实例化 mock 的其他方法,例如使用构造函数注入(inject)(如果您在测试类中引用 final 字段)。
没有规则,没有运行者
JUnit 4 规则和运行器在 JUnit 5 中不起作用,因此 MockitoRule
和 Mockito runner无法使用。
关于java - 如何在 JUnit5 中使用 Mockito,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40961057/