Eclipse Optimize Imports для включения статического импорта


411

Есть ли способ заставить Eclipse автоматически искать статический импорт? Например, теперь, когда я наконец-то обновился до Junit 4, я бы хотел написать:

assertEquals(expectedValue, actualValue);

хит Ctrl+Shift + Oи добавьте Eclipse:

import static org.junit.Assert.assertEquals;

Может быть, я слишком много прошу.

Ответы:


572

Я использую Eclipse Europa, который также имеет раздел «Любимые настройки»:

Окно> Настройки> Java> Редактор> Помощник по содержимому> Избранное

У меня есть следующие записи (при добавлении используйте «Новый тип» и опустите .*):

org.hamcrest.Matchers.*
org.hamcrest.CoreMatchers.*
org.junit.*
org.junit.Assert.*
org.junit.Assume.*
org.junit.matchers.JUnitMatchers.*

Все, кроме третьего, являются статическим импортом. Имея их в качестве избранных, если я наберу " assertT" и нажму Ctrl+Space , Eclipse предложит assertThatв качестве предложения, и если я выберу его, он добавит в файл правильный статический импорт.


26
Ах, хитрость заключается в том, чтобы просто добавить org.junit.Assertчерез New Type..., .*тогда это неявно.
KomodoDave

5
Верно ли, что автоматический импорт Ctrl+Shift+oне добавит необходимый импорт, и на самом деле вы должны навести курсор и выбрать Add static import..опцию? Жаль, что обычное диалоговое окно со списком автоматического импорта не отображается.
KomodoDave

2
@ J.Stoever - Если вы используете JUnit 4, вам нужно использовать форму Hamcrest:assertThat(value, is(expected));
Дэвид Харкнесс

2
Я попробовал это с Eclipse Kepler, но безрезультатно. Я также перезапустил Eclipse. Нет автозаполнения, нет статического выбора импорта при наведении курсора или нажатии CTRL + 1. Кто-нибудь сталкивался с этим?
Magnilex

2
Intellij Idea поддерживает это из коробки. Затмение затмения не делает.
Neeraj

242

Если вы выделите метод Assert.assertEquals(val1, val2)и нажмете Ctrl+ Shift+ M(Добавить импорт), он будет добавлен как статический импорт, по крайней мере, в Eclipse 3.4.


11
cmd-shift-M на маке
Джошуа Голдберг

15
В Eclipse Juno мне удалось заставить его работать, только если я выделил только метод, а затем использовал CTRL + SHIFT + M.
ktulinho

5
Это должен быть победитель!
Клинт Иствуд

Работает также для статических полей AX -> X (высоко AX и Ctrl + Shift + M). Спасибо. Именно то, что я хотел.
Эйад Эбрахим

5
У меня работает на Луне. Убедитесь, что курсор находится на правой стороне периода. Жаль, что я узнал об этом много лет назад!
HDave

31

В Eclipse 3.4 есть раздел «Избранное» в разделе «Окно»> «Настройки»> «Java»> «Редактор»> «Помощник по содержимому»

Если вы используете org.junit.Assertмного, вы можете найти некоторую ценность, чтобы добавить его там.


21

Не совсем то, что я хотел, но я нашел обходной путь. В Eclipse 3.4 (Ганимед) перейдите к

Окно-> Настройки-> Java-> Редактор-> Content Assist

и установите флажок Использовать статический импорт (только 1.5 или выше) .

Это не приведет к импорту в Optimize Imports, но если вы сделаете Quick Fix ( CTRL+ 1) в строке, это даст вам возможность добавить статический импорт, который достаточно хорош.


10

Из Content Assist для статического импорта

Чтобы получить предложения по поддержке контента для статических участников, настройте свой список избранных статических членов на странице Java > Editor > Content Assist > Favoritesпредпочтений страницы предпочтений «Открыть избранное» .
Например, если вы добавили java.util.Arrays.*или org.junit.Assert.*в этот список, то все статические методы этого типа, соответствующие префиксу завершения, будут добавлены в список предложений.

открыто Window » Preferences » Java » Editor » Content Assist » Favorites

введите описание изображения здесь


5

Для тестов 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

Когда вы добавляете выше как новый тип, он автоматически добавляет. * В пакет.



2

Выберите константу, введите

Ctrl + 1  (quick fix)

Выберите «Преобразовать в статический импорт». из выпадающего списка.

«Быстрое исправление» имеет параметры, даже если это не ошибка.


1

В Eclipse 4.9 вы можете статически импортировать существующие вызовы, используя быстрое исправление.

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

Подробнее здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.