Перейти к основному содержимому

Предупреждение: «Тип MockitoJUnitRunner устарел»

· 3 мин. чтения

1. Введение

В этом кратком руководстве мы рассмотрим одно из предупреждений, которые мы можем увидеть при работе с популярной средой тестирования Mockito .

А именно тот, который относится к устаревшему классу MockitoJUnitRunner . Мы увидим, почему появляется это предупреждение и как с ним справиться.

Наконец, давайте напомним, что мы можем использовать MockitoJUnitRunner , чтобы указать Mockito инициализировать наши тестовые двойники, аннотированные с помощью @Mock или @Spy, вместе с другими аннотациями Mockito.

Чтобы узнать больше о тестировании с помощью Mockito, ознакомьтесь с нашей серией статей о Mockito здесь .

2. Почему отображается это предупреждение

Это предупреждение об устаревании появится, если мы используем версию Mockito до 2.2.20 (ноябрь 2016 г.).

Давайте кратко пройдемся по истории позади него. В более ранних версиях Mockito, если мы хотели использовать Mockito JUnit Runner, нам нужно было импортировать пакет:

import org.mockito.runners.MockitoJUnitRunner;

Начиная с версии 2.2.20 классы, связанные с JUnit, были перегруппированы в отдельный пакет JUnit. Мы можем найти пакет здесь:

import org.mockito.junit.MockitoJUnitRunner;

Следовательно, исходный org.mockito.runners.MockitoJUnitRunner теперь устарел. Логика класса теперь принадлежит org.mockito.junit.runners.MockitoJUnitRunner .

Хотя удаление предупреждения не является обязательным, это рекомендуется сделать. Mockito 3 удалит этот класс.

3. Решения

В этом разделе мы объясним три различных решения для устранения этого предупреждения об устаревании:

  • Обновление для использования правильного импорта
  • Инициализация полей с помощью MockitoAnnotations
  • Использование МокитоПравила

3.1. Обновление импорта

Давайте начнем с самого простого решения, которое состоит в том, чтобы просто изменить оператор импорта пакета :

import org.mockito.junit.MockitoJUnitRunner;

@RunWith(MockitoJUnitRunner.class)
public class ExampleTest {
//...
}

И это все! Изменение должно быть достаточно простым.

3.2. Инициализация полей с помощью MockitoAnnotations

В следующем примере мы инициализируем наши макеты другим способом, используя класс MockitoAnnotations :

import org.junit.Before;
import org.mockito.MockitoAnnotations;

public class ExampleTest {

@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}

//...
}

В первую очередь убираем ссылку на MockitoJUnitRunner. Вместо этого мы вызываем статический метод initMocks() класса MockitoAnnotations .

Мы делаем это в методе JUnit @Before класса теста. Это инициализирует любые поля с аннотациями Mockito перед выполнением каждого теста.

3.3. Использование МокитоПравила

Однако, как мы уже упоминали, MockitoJUnitRunner ни в коем случае не является обязательным. В этом последнем примере мы рассмотрим другой способ заставить @Mock работать с помощью MockitoRule :

import org.junit.Rule;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;

public class ExampleTest {

@Rule
public MockitoRule rule = MockitoJUnit.rule();

//...
}

Наконец, в этом примере правило JUnit инициализирует любые макеты, аннотированные с помощью @Mock .

Следовательно, это означает, что явное использование MockitoAnnotations#initMocks(Object) или @RunWith(MockitoJUnitRunner.class) не требуется.

4. Заключение

Подводя итог, в этой короткой статье мы увидели несколько вариантов того, как исправить предупреждение об устаревании класса MockitoJUnitRunner .