Подтвердить что ты не робот

Поиск статических утверждений импорта для конструкций Mockito

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

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

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

Да, я знаю и пытаюсь использовать окно Eclipse Window → Preferences- > Java → Editor- > Content Assist → Favorites. Это помогает, но это не касается гвоздя на голове.

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

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

4b9b3361

Ответ 1

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

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

Кроме того, при использовании mocks я стараюсь избегать 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. И вы можете сделать это по-другому, пока вы не смешиваете матчи.

Ответ 2

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

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

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;

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

Ответ 3

For is()

import static org.hamcrest.CoreMatchers.*;

Для assertThat()

import static org.junit.Assert.*;

В случае, когда() и verify()

import static org.mockito.Mockito.*;