Eclipse Optimiser les importations pour inclure les importations statiques


411

Existe-t-il de toute façon que Eclipse recherche automatiquement les importations statiques? Par exemple, maintenant que je suis enfin passé à Junit 4, j'aimerais pouvoir écrire:

assertEquals(expectedValue, actualValue);

appuyez sur Ctrl+ Shift+ Oet demandez à Eclipse d'ajouter:

import static org.junit.Assert.assertEquals;

Peut-être que je demande trop.

Réponses:


572

J'utilise Eclipse Europa, qui a également la section Préférences favorites:

Fenêtre> Préférences> Java> Éditeur> Assistant de contenu> Favoris

Dans le mien, j'ai les entrées suivantes (lors de l'ajout, utilisez "Nouveau type" et omettez le .*):

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

Tous, sauf le tiers, sont des importations statiques. En les ayant comme favoris, si je tape " assertT" et appuie sur Ctrl+Space , Eclipse offre assertThatune suggestion, et si je le choisis, il ajoutera l'importation statique appropriée au fichier.


26
Ah - l'astuce consiste à simplement ajouter org.junit.Assertvia New Type..., le .*est alors implicite.
KomodoDave

5
Est-il exact que l'importation automatique Ctrl+Shift+on'ajoutera pas l'importation nécessaire, et en fait, vous devez survoler le curseur et choisir l' Add static import..option? C'est dommage que la boîte de dialogue habituelle de liste de sélection d'importation automatique ne s'affiche pas.
KomodoDave

2
@ J.Stoever - Si vous utilisez JUnit 4, vous voudrez utiliser le formulaire Hamcrest:assertThat(value, is(expected));
David Harkness

2
J'ai essayé cela avec Eclipse Kepler, mais en vain. J'ai également redémarré Eclipse. Pas de saisie semi-automatique, pas de choix d'importation statique lors du déplacement ou de la pression sur CTRL + 1. Quelqu'un a-t-il vécu cela?
Magnilex

2
Intellij Idea prend cela en charge. L'éclipse honteuse ne le fait pas.
Neeraj

242

Si vous mettez en surbrillance la méthode Assert.assertEquals(val1, val2)et appuyez sur Ctrl+ Shift+ M(Ajouter une importation), il l'ajoutera en tant qu'importation statique, au moins dans Eclipse 3.4.


11
cmd-shift-M sur le mac
Joshua Goldberg

15
Dans Eclipse Juno, je n'ai réussi à le faire fonctionner que si je ne sélectionne que la méthode et ensuite j'utilise CTRL + SHIFT + M.
ktulinho

5
Ce devrait être le gagnant!
Clint Eastwood

Fonctionne également pour les champs statiques AX -> X (fortement AX et Ctrl + Maj + M). Merci. Exactement ce que je voulais.
Eyad Ebrahim

5
Fonctionne pour moi sur Luna. Assurez-vous que votre curseur est sur le côté droit de la période. J'aimerais avoir appris cela il y a des années!
HDave

31

Eclipse 3.4 a une section Favoris sous Window-> Preferences-> Java-> Editor-> Content Assist

Si vous en utilisez org.junit.Assertbeaucoup, vous pourrez peut-être y ajouter de la valeur.


21

Pas exactement ce que je voulais, mais j'ai trouvé une solution de contournement. Dans Eclipse 3.4 (Ganymède), accédez à

Fenêtre-> Préférences-> Java-> Éditeur-> Assistant de contenu

et cochez la case Utiliser les importations statiques (seulement 1,5 ou plus) .

Cela n'apportera pas l'importation sur une optimisation des importations, mais si vous effectuez une correction rapide ( CTRL+ 1) sur la ligne, cela vous donnera la possibilité d'ajouter l'importation statique qui est assez bonne.


10

À partir de l' aide au contenu pour les importations statiques

Pour obtenir des propositions d'assistance de contenu pour les membres statiques, configurez votre liste de membres statiques préférés sur la page de Java > Editor > Content Assist > Favoritespréférences Ouvre la page de préférences Favoris .
Par exemple, si vous avez ajouté java.util.Arrays.*ou org.junit.Assert.*à cette liste, toutes les méthodes statiques de ce type correspondant au préfixe d'achèvement seront ajoutées à la liste des propositions.

Ouvert Window » Preferences » Java » Editor » Content Assist » Favorites

entrez la description de l'image ici


5

Pour les tests SpringFramework, je recommanderais également d'ajouter ce qui suit

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

Lorsque vous ajoutez ci-dessus en tant que nouveau type, il ajoute automatiquement. * Au package.



2

Sélectionnez la constante, tapez

Ctrl + 1  (quick fix)

Sélectionnez "Convertir en importation statique". de la liste déroulante.

"Quick fix" a des options même s'il ne s'agit pas d'une erreur.


1

Dans Eclipse 4.9, vous pouvez importer des invocations existantes statiques à l'aide d'une solution rapide.

Un nouveau correctif rapide a été implémenté qui permet à l'utilisateur de convertir les accès aux champs statiques et les méthodes statiques pour utiliser une importation statique. Il est également possible de remplacer toutes les occurrences en même temps.

Plus de détails ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.