Есть ли способ заставить Eclipse автоматически искать статический импорт? Например, теперь, когда я наконец обновился до Junit 4, я хотел бы иметь возможность писать:
assertEquals(expectedValue, actualValue);
нажмите Ctrl + Shift + O и добавьте Eclipse:
import static org.junit.Assert.assertEquals;
Может, я слишком многого прошу.




Не совсем то, что я хотел, но я нашел обходной путь. В Eclipse 3.4 (Ганимед) перейдите к
Window->Preferences->Java->Editor->Content Assist
и установите флажок для Используйте статический импорт (только 1.5 или выше).
Это не приведет к импорту при оптимизации импорта, но если вы выполните быстрое исправление (CTRL + 1) в строке, это даст вам возможность добавить статический импорт, который достаточно хорош.
Если вы выделите метод Assert.assertEquals(val1, val2) и нажмете Ctrl + Shift + M (Добавить импорт), он добавит его как статический импорт, по крайней мере, в Eclipse 3.4.
Это должно быть победителем!
Работает также для статических полей A.X -> X (сильно A.X и Ctrl + Shift + M). Спасибо. Именно то, что я хотел.
Большой! Мне так не хватало этой функции
У меня работает на Luna. Убедитесь, что ваш курсор находится справа от точки. Жаль, что я не узнал об этом много лет назад!
@yair - у меня тоже не работает в Kepler 4.3 assertEquals(3, team.getGamesWon())
ОБНОВЛЕНИЕ: работает на Eclipse Марс. Просто поместите курсор где-нибудь на методе.
В Eclipse 3.4 есть раздел «Избранное» в разделе «Окно-> Настройки-> Java-> Редактор-> Помощник по содержанию».
Если вы часто используете org.junit.Assert, возможно, вам стоит добавить его туда.
Я использую Eclipse Europa, в котором также есть раздел любимых предпочтений:
Window > Preferences > Java > Editor > Content Assist > Favorites
У меня есть следующие записи (при добавлении используйте «Новый тип» и опускайте .*):
org.hamcrest.Matchers.*
org.hamcrest.CoreMatchers.*
org.junit.*
org.junit.Assert.*
org.junit.Assume.*
org.junit.matchers.JUnitMatchers.*
Все, кроме третьей, являются статическим импортом. Имея их в качестве избранных, если я наберу «assertT» и нажму Ctrl + Space, Eclipse предложит assertThat в качестве предложения, и если я выберу его, он добавит правильный статический импорт в файл.
Да, круто, но, чувак, у тебя есть только совпадения для хамкреста. Это не приносит с собой AssertThat ..?
Если вы попробуете это в Eclipse 4.2 "Juno", добавление .* будет запрещено, поэтому вы должны вручную ввести New Member -> org.junit.Assert.assertEquals и так далее. У кого-нибудь есть лучшее решение для этого?
Ах, уловка состоит в том, чтобы просто добавить org.junit.Assert через New Type..., тогда .* будет неявным.
Верно ли, что автоматический импорт Ctrl+Shift+o не добавляет необходимый импорт, и на самом деле вы должны навести курсор и выбрать опцию Add static import..? Жаль, что обычный диалог списка выбора автоимпорта не отображается.
Это больше не работает. Я добавил записи точно так, как показано, но теперь мне будет предложено что угодно, если я наберу «asserte» и и ctrl + space. Есть идеи ?
@ J.Stoever - Если вы используете JUnit 4, вы захотите использовать форму Hamcrest: assertThat(value, is(expected));
Также используйте Java -> Редактор -> Сохранить действия -> Выберите «Организовать импорт». Он автоматически организует ваш импорт каждый раз, когда вы сохраняете. Поэтому нужно использовать любые ярлыки.
Пытался достать assertEquals(...). В Eclipse kepler 4.3 я попробовал asserte, а затем ctrl + space. Он дает мне все методы, которые начинаются с asserte. Спасибо.
Вы также можете установить количество импортов, необходимых для использования .* в статическом импорте, равным 1. Но имейте в виду, что в этом случае вы не должны использовать статический импорт для классов, которые содержат члены класса со слишком общими именами (например, не используйте статический импорт с .* для классов с getInstance).
Я пробовал это с Eclipse Kepler, но безуспешно. Я также перезапустил Eclipse. Нет автодополнения, нет выбора статического импорта при наведении курсора или нажатии CTRL + 1. Кто-нибудь сталкивался с этим?
Intellij Idea поддерживает это из коробки. Затмение стыда - нет.
не интуитивно понятный уровень выше 9000!
От Помощник по содержанию для статического импорта
To get content assist proposals for static members configure your list of favorite static members on the Opens the Favorites preference page
Java > Editor > Content Assist > Favoritespreference page.
For example, if you have addedjava.util.Arrays.*ororg.junit.Assert.*to this list, then all static methods of this type matching the completion prefix will be added to the proposals list.
Открыть Window » Preferences » Java » Editor » Content Assist » Favorites

Для тестов SpringFramework я бы также рекомендовал добавить ниже
org.springframework.test.web.servlet.request.MockMvcRequestBuilders
org.springframework.test.web.servlet.request.MockMvcResponseBuilders
org.springframework.test.web.servlet.result.MockMvcResultHandlers
org.springframework.test.web.servlet.result.MockMvcResultMatchers
org.springframework.test.web.servlet.setup.MockMvcBuilders
org.mockito.Mockito
Когда вы добавляете выше как новый Тип, он автоматически добавляет. * К пакету.
В Eclipse 4.9 вы можете статически импортировать существующие вызовы, используя быстрое исправление.
A new quick fix has been implemented that allows the user to convert static field accesses and static methods to use a static import. It's also possible to replace all occurrences at the same time.
Выберите константу, введите
Ctrl + 1 (quick fix)
Выберите «Преобразовать в статический импорт». из раскрывающегося списка.
«Быстрое исправление» имеет параметры, даже если это не ошибка.
Ярлык для статического импорта: CTRL + SHIFT + M
В Eclipse Juno мне удалось заставить его работать, только если я выделил только метод, а затем использовал CTRL + SHIFT + M.