Поиск статических операторов импорта для конструкций Mockito - PullRequest
67 голосов
/ 06 сентября 2011

Я пытаюсь прорваться сквозь кирпичную стену между мной и Мокито.Я вырвал свои волосы из-за попыток получить правильные import статические операторы для материала Mockito.Вы могли бы подумать, что кто-то просто выбрасывает таблицу, в которой говорится, что anyInt () происходит от org.mockito.Matchers и когда () происходит от org.mockito.Mockito и т. д., но это было бы слишком полезно для новичков, не так ли?

Такого рода вещи, особенно в сочетании с множеством других операторов импорта, заканчивающихся звездочками, не являютсявсегда очень полезно:

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

Да, я знаю и пытался использовать механизм Окно Eclipse -> Настройки-> Java -> Редактор-> Помощник по содержимому -> Избранное ,Это помогает, но не бьет по голове.

Любые ответы на этот вопрос будут оценены.

Большое спасибо, Расс

Ответы [ 3 ]

94 голосов
/ 14 сентября 2011

Вот что я делал, чтобы справиться с ситуацией.

Я использую глобальный импорт для нового класса тестирования.

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import static org.mockito.Matchers.*;

Когда вы закончите писать свой тест и вам нужно совершить коммит, просто нажмите CTRL + SHIFT + O, чтобы организовать пакеты. Например, вы можете просто оставить:

import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Matchers.anyString;

Это позволяет вам кодировать, не застревая, пытаясь найти правильный пакет для импорта.

16 голосов
/ 06 сентября 2011

Проблема в том, что статический импорт из Hamcrest и Mockito имеет схожие имена, но возвращает Matchers и действительные значения соответственно.

Один из обходных путей - просто скопировать классы Hamcrest и / или Mockito и удалить / переименовать статические функции, чтобы их было легче запомнить и меньше отображать в автозаполнении. Вот что я сделал.

Кроме того, при использовании насмешек я стараюсь избегать assertThat в пользу других assertions и verify, например,

assertEquals(1, 1);
verify(someMock).someMethod(eq(1));

вместо

assertThat(1, equalTo(1));
verify(someMock).someMethod(eq(1));

Если вы удалите классы из списка «Избранное» в Eclipse и напечатаете длинное имя, например, org.hamcrest.Matchers.equalTo и нажмите CTRL + SHIFT + M, чтобы «Добавить импорт», тогда автозаполнение покажет только совпадения Hamcrest, а не совпадения Mockito. И вы можете сделать это другим способом, если вы не смешиваете совпадения.

1 голос
/ 23 июля 2015

For is ()

import static org.hamcrest.CoreMatchers.*;

Для assertThat ()

import static org.junit.Assert.*;

Для когда () и проверки ()

import static org.mockito.Mockito.*;
...