1.介绍

在这个快速教程中,我们将看看使用流行测试框架时可能会看到的一个警告5

也就是说,指的是已弃用的MockitoJUnitRunner类。我们将看到为什么会发生这个警告以及如何处理它。

最后,提醒一下我们可以用MockitoJUnitRunner来指示Mockito初始化我们的带注释的测试双精度@Mock@Spy,以及其他Mockito注释。

要了解更多关于使用Mocki金宝搏官网188beto进行测试的信息,请查看我们的5系列在这里

2.为什么显示此警告

如果我们使用2.2.20(2016年11月)之前的版本Mockito,将出现此弃用警告。

让我们简要回顾一下它背后的历史。在早期版本的Mockito中,如果我们想要使用Mockito JUnit Runner,我们需要导入的包是:

进口org.mockito.runners.MockitoJUnitRunner;

从2.2.20版本开始,JUnit相关的类被重新分组到一个特定的JUnit包中。我们可以在这里找到包裹:

进口org.mockito.junit.MockitoJUnitRunner;

因此,最初的org.mockito.runners.MockitoJUnitRunner现在已经弃用。类的逻辑现在属于org.mockito.junit.runners.MockitoJUnitRunner

虽然删除警告不是强制的,但建议这样做。Mockito 3将删除这个类。

3.解决方案

在本节中,我们将解释解决这个deprecation警告的三种不同的解决方案:

  • 更新以使用正确的导入
  • 初始化字段使用MockitoAnnotations
  • 使用MockitoRule

3.1。更新进口

让我们从最简单的解决方案开始更改包导入语句:

进口org.mockito.junit.MockitoJUnitRunner;@RunWith(MockitoJUnitRunner.class) public class ExampleTest{//…}

这就是一切!更改应该相当容易。

3.2。初始化字段使用MockitoAnnotations

在下一个例子中,我们将使用不同的方法初始化模拟MockitoAnnotations:

进口org.junit.Before;进口org.mockito.MockitoAnnotations;public class ExampleTest {@Before public void initmockks () {mockitoannotations . initmockks (this);} / /……}

首先,我们删除对MockitoJUnitRunner。相反,我们称之为静态initMocks ()的方法MockitoAnnotations类。

我们在JUnit中这样做@Before测试类的方法。这将在每个测试执行之前用Mockito注释初始化任何字段。

3.3。使用MockitoRule

然而,正如我们已经提到的,MockitoJUnitRunner并不是强制性的。在最后一个例子中,我们再想想别的办法@Mock工作使用MockitoRule:

进口org.junit.Rule;进口org.mockito.junit.MockitoJUnit;进口org.mockito.junit.MockitoRule;public class ExampleTest {@Rule public MockitoRule rule = MockitoJUnit.rule();/ /……}

最后,在这个示例中,JUnit规则初始化所有带注释的模拟@Mock

因此,这意味着显式的使用MockitoAnnotations # initMocks(对象)@RunWith (MockitoJUnitRunner.class)不是必需的。

4.结论

总之,在这篇简短的文章中,我们看到了关于如何修复MockitoJUnitRunner类弃用警告。

通用的底部

开始使用Spring 5和Spring Boot 2,通过学习的春天课程:

>>看看这个课程
对这篇文章的评论关闭!