2009-07-13 21 views
8

Parece que cuando hago "mover" la refactorización todas mis pruebas junit se establecen en su lugar anterior. A menudo, pruebo las clases visibles del "paquete", por lo que se vuelven invisibles, si el SUT se mueve a otro paquete.Intellij Idea "Mover refactorización" con pruebas de Junit

¿Mueves las pruebas a mano?

+0

Me temo que no puedo entender su pregunta. ¿Podría proporcionarnos más información? Eso podría ayudar a responder esta pregunta (+1 para que pueda comentar) – guerda

+0

supongamos que tengo la clase AAA en el paquete xxx. El destino de la clase es src/xxx/AAA.java, y supongamos que tengo una prueba ubicada en test/xxx/AAATest.java Por lo tanto, cuando mueva la clase AAA al paquete yyy mi prueba permanezca en el paquete xxx. – dmitrynikolaev

Respuesta

2

tengo 4 opciones para usted:!.

  1. Vaya a la vista "paquete" de la izquierda, seleccione ambos archivos, y luego pulsa F6 Se Shoul d moverlos a ambos al lugar correcto.

  2. Haga que la clase sea pública temporalmente, antes de hacer su refactorizador, y luego vuelva a encenderla.

  3. Intente mover la prueba primero. Me parece recordar que evita romper cualquiera de las dependencias.

  4. Hay un complemento (creo que es toggleTest o unitTest - los tenía instalados) que parchea el Move Refactor para llevar también la prueba con él. Funcionó muy bien. Desafortunadamente, parece que esto puede no funcionar con la última IDEA.

0

El comportamiento que describes es perfectamente normal.

src/package1/A.java 
test/package1/ATest.java 

En su ATest.java hay una import package1.A;.
Después de su rediseñado, que se parece a esto: Código

src/package2/A.java 
test/package1/ATest.java 

La prueba se quedó donde estaba. No movió el código de prueba, sino su código fuente. No debería afectar a ninguna otra carpeta (como en su ejemplo).
La referencia en ATest.java ahora debe ser import package2.A;. De lo contrario, la refactorización salió mal.

No obstante, sus pruebas deberían funcionar, incluso si están en un directorio diferente. Eso es porque la importación fue cambiada por el método de refactorización.

Si desea limpiar su estructura de carpetas, usted tiene que cambiar manualmente el nombre del paquete test/package1 a test/package2 (lo sé, el paquete es package1 y package2 pero desea fortalecer el enfoque de la estructura de carpetas.

espero que te pueda ayudar

Cuestiones relacionadas