java - 如何在 JUnit5 中使用 Mockito

标签 java unit-testing mockito junit5

如何在 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 中不起作用,因此 MockitoRuleMockito runner无法使用。

关于java - 如何在 JUnit5 中使用 Mockito,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40961057/

相关文章:

java - 自定义 ImageView 不显示图像

java - 如何使用未实现 `equals` 的参数模拟方法调用?

android - 使用 robolectric 和 mockito 进行单元测试,以在 Android 中进行改造

java - 如何防止 JScrollBar 在某些事件(例如向下翻页)上滚动?

java - 编写 hibernate 查询时遇到问题

java - 如何防止按钮环绕在 Java 中显示?

java - 如何 stub 用@InjectMocks 注释的类的方法?

javascript - AngularJS 中的单元测试 - 模拟服务和 promise

java - 使用 mockito 的 Unitest Create(Post) 方法

spring-boot - 如何模拟测试 Kotlin Spring boot 2 应用程序