Eclipse optimiza las importaciones para incluir importaciones estáticas

411

¿Hay alguna forma de hacer que Eclipse busque automáticamente las importaciones estáticas? Por ejemplo, ahora que finalmente me actualicé a Junit 4, me gustaría poder escribir:

assertEquals(expectedValue, actualValue);

presione Ctrl+ Shift+ Oy haga que Eclipse agregue:

import static org.junit.Assert.assertEquals;

Tal vez estoy pidiendo demasiado.

Paul Croarkin
fuente

Respuestas:

572

Estoy usando Eclipse Europa, que también tiene la sección de preferencias favoritas:

Ventana> Preferencias> Java> Editor> Content Assist> Favoritos

En el mío, tengo las siguientes entradas (cuando agregue, use "Nuevo tipo" y omita el .*):

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

Todos menos el tercero son importaciones estáticas. Al tenerlos como favoritos, si escribo " assertT" y presiono Ctrl+Space , Eclipse se ofrece assertThatcomo una sugerencia, y si lo selecciono, agregará la importación estática adecuada al archivo.

Joey Gibson
fuente
26
Ah, el truco es simplemente agregar org.junit.Assertvía New Type..., .*luego está implícito.
KomodoDave
55
¿Es correcto que la importación automática Ctrl+Shift+ono agregue la importación necesaria y, de hecho, debe pasar el cursor y elegir la Add static import..opción? Es una pena que no se muestre el diálogo habitual de la lista de selección de importación automática.
KomodoDave
2
@ J.Stoever: si está usando JUnit 4, querrá usar la forma Hamcrest:assertThat(value, is(expected));
David Harkness
2
Intenté esto con Eclipse Kepler, pero fue en vano. Reinicié Eclipse también. Sin autocompletar, sin opción de importación estática al pasar el mouse o presionar CTRL + 1. ¿Alguien ha experimentado esto?
Magnilex
2
Intellij Idea admite esto de forma inmediata. El eclipse de vergüenza no.
Neeraj
242

Si resalta el método Assert.assertEquals(val1, val2)y presiona Ctrl+ Shift+ M(Agregar importación), lo agregará como una importación estática, al menos en Eclipse 3.4.

Dave L.
fuente
11
cmd-shift-M en la mac
Joshua Goldberg
15
En Eclipse Juno solo he logrado que funcione si resalto solo el método y luego uso CTRL + MAYÚS + M.
ktulinho
55
¡Este debería ser el ganador!
Clint Eastwood
Funciona también para campos estáticos AX -> X (altamente AX y Ctrl + Shift + M). Gracias. Exactamente lo que quería.
Eyad Ebrahim
55
Funciona para mí en Luna. Asegúrese de que su cursor esté en el lado derecho del punto. ¡Ojalá hubiera aprendido sobre esto hace años!
HDave
31

Eclipse 3.4 tiene una sección de Favoritos en Ventana-> Preferencias-> Java-> Editor-> Content Assist

Si usa org.junit.Assertmucho, puede encontrar algún valor para agregarlo allí.

Bill Michell
fuente
21

No es exactamente lo que quería, pero encontré una solución. En Eclipse 3.4 (Ganímedes), vaya a

Ventana-> Preferencias-> Java-> Editor-> Content Assist

y marque la casilla de verificación para Usar importaciones estáticas (solo 1.5 o superior) .

Esto no traerá la importación en Optimizar importaciones, pero si realiza una Solución rápida ( CTRL+ 1) en la línea, le dará la opción de agregar la importación estática que es lo suficientemente buena.

Paul Croarkin
fuente
10

Desde Content asistencia para importaciones estáticas

Para obtener propuestas de asistencia de contenido para miembros estáticos, configure su lista de miembros estáticos favoritos en la página de Java > Editor > Content Assist > Favoritespreferencias Abre la página de preferencias Favoritos .
Por ejemplo, si ha agregado java.util.Arrays.*o org.junit.Assert.*a esta lista, todos los métodos estáticos de este tipo que coincidan con el prefijo de finalización se agregarán a la lista de propuestas.

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

ingrese la descripción de la imagen aquí

Sumit Singh
fuente
5

Para las pruebas SpringFramework, también recomendaría agregar lo siguiente

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

Cuando agrega arriba como nuevo Tipo, agrega automáticamente. * Al paquete.

Neeraj
fuente
3

Atajo para importación estática: CTRL + MAYÚS + M

Michael Hegner
fuente
2

Seleccione la constante, escriba

Ctrl + 1  (quick fix)

Seleccione "Convertir a importación estática". desde el menú desplegable.

La "Solución rápida" tiene opciones aunque no sea un error.

teknopaul
fuente
1

En Eclipse 4.9, puede importar estáticamente las invocaciones existentes utilizando una solución rápida.

Se ha implementado una nueva solución rápida que permite al usuario convertir accesos de campo estático y métodos estáticos para usar una importación estática. También es posible reemplazar todas las ocurrencias al mismo tiempo.

Más detalles aquí

Ankit Soni
fuente