Ejecución de una única prueba de JUnit en Eclipse

85

Si tengo un conjunto de pruebas con varias pruebas, cuando intento ejecutar una única prueba unitaria, ya sea desde el menú contextual del editor de código o desde la vista JUnit, parece insistir en ejecutar siempre el conjunto completo, en lugar de la prueba única. ¿Hay alguna manera de deshabilitar para cambiar este comportamiento para que pueda solicitar ejecutar eso, y solo eso, probar?

user14128
fuente
11
Sería bueno que eligiera la mejor respuesta marcando la marca verde junto a la respuesta.
guerda

Respuestas:

96

En el explorador de paquetes, despliega la clase. Debería mostrarte todos los métodos. Haga clic derecho en el método que desea ejecutar, luego seleccione Ejecutar como -> JUnit en el menú contextual (recién probado con Eclipse 3.4.1). También la selección de "Ejecutar" en una sola entrada en la vista de resultados de JUnit para volver a ejecutar una prueba funciona de la misma manera.

Volker Stolz
fuente
3
Desafortunadamente, esto solo funciona para métodos de prueba que se implementan directamente en esa clase. No funciona para los métodos @Test heredados.
Christopher Barber
1
Tenga en cuenta que parece que debe hacer clic en el nombre del método. Al hacer clic dentro del método, se ejecutará toda la clase. (O al menos así es como me está comportando)
emragins
Parece que solo funciona desde este "explorador de paquetes" en particular, que es más que complicado cuando se trata de encontrar rápidamente un método que desee probar. E incluso, el depurador se salta los otros métodos, lo que consume tiempo extra. Debe haber una mejor manera ...
Macilias
y tampoco es frágil ... ahora eclipse decidió no omitir otras pruebas cuando se ejecuta de esta manera :(
Macilias
27

La forma más rápida que conozco:

  1. Presione Ctrl+ Shift+ (mueve el cursor a la declaración del método actual),
  2. presione Alt+ Shift+ x(o dpara depurar) luego presione t(tecla de acceso rápido para "Ejecutar prueba JUnit" ),
  3. comprobar el resultado de la prueba,
  4. presione Alt+ para volver a la línea de código que estaba antes.

Si desea ejecutar todas las pruebas, puede omitir los pasos 1 y 4.

schnatterer
fuente
13

En Eclipse 3.5, puede solucionar esto cambiando el ejecutor de pruebas a JUnit 3. Esto solo funcionará para las pruebas de JUnit 3, no para las pruebas de JUnit 4. Puede cambiar el corredor de prueba haciendo lo siguiente:

  1. Haga clic con el botón derecho en uno de los métodos de prueba en el explorador de esquemas
  2. Seleccione Ejecutar como -> Ejecutar configuraciones
  3. En la pestaña 'Prueba', seleccione 'Ejecutar una sola prueba'
  4. En el menú desplegable Test Runner, seleccione 'JUnit 3'

También puede funcionar en otras versiones.

lucrussell
fuente
¡Buena llamada! Cambiar "Test Runner" a "JUnit 3" en el diálogo de configuración de ejecución funcionó para mí en Eclipse 3.6.0 (Helios). Ahora puedo ejecutar un solo método en una prueba JUnit. FWIW, nunca he tenido problemas para ejecutar clases de prueba individuales de JUnit 3 o 4 .
Adam Monsen
Perfecto, esto también funcionó para mí. La respuesta anterior no lo hizo a pesar de que parece tener más votos a favor.
dreza
12

Esto es posible en Eclipse Indigo con JUnit 4.8.2. Haga clic con el botón derecho en el método que desea realizar la prueba unitaria individualmente en el Outlinepanel y seleccione Run As -> JUnit Test.

Incluso puede hacer clic con el botón derecho en el nombre de un método de prueba en el editor de origen y seleccionar Run As -> Junit Test.

wulfgarpro
fuente
1
parece probar ese caso de prueba específico. Sin embargo, después de eso, todavía continúa con otros casos de prueba.
lwpro2
@ lwpro2 Tienes que usar JUnit 4 (anotaciones) para probar un solo caso de prueba. JUnit 3 (extender TestCase) seguirá ejecutando todas las pruebas relacionadas.
AnthonyW
1
wulfgar.pro Le estaba haciendo saber a @ lwpro2 que si está ejecutando su prueba JUnit con un corredor JUnit 4 (porque, por ejemplo, está usando JUnit 4.8.2), SIN EMBARGO, su prueba aún extiende TestCase, no podrá ejecutar una sola prueba por sí mismo. Debes usar un corredor JUnit 3 o convertir tu prueba en anotaciones.
AnthonyW
Gracias por los comentarios. Sin embargo, estaba usando Junit4, con SpringJunit4ClassRunner. De todos modos, no es gran cosa. comentar la anotación es rápido.
lwpro2
esta respuesta es más simple
Jackson Tale
9

No use Strg+ F11sino la tecla de acceso rápido Alt+ Shift+ X-> T.
Entonces Eclipse ejecutará el archivo abierto actual como una prueba JUnit. El botón de reproducción verde solo ejecutará la última configuración de ejecución elegida.

Para mí, funciona bien con Alt+ Shift+ X-> T.

guerda
fuente
Gracias. Pero digamos que está trabajando en una clase que está siendo probada por una prueba unitaria. A medida que modifica la clase, ¿cómo ejecuta su UnitTest correspondiente sin cambiar la ventana al archivo UnitTest?
bibstha
@bibstha Puede usar Ctrl + 3 y luego escribir "volver a ejecutar". Esto le permite volver a ejecutar el último caso de prueba JUnit. En Ventana-> Preferencias-> General-> Teclas, puede asignar un atajo propio para esta acción. Ctrl + Shift + F11 sería adecuado, en mi opinión.
guerda
9

Agregaré a los demás al incluir una única forma de teclado altamente productiva que le permita depurar una sola unidad de prueba (método).

Mueva el cursor al nombre del método usando

  • Ctrl+ Shift+ Upo
  • Ctrl+ Shift+ Downo
  • Ctrl+ oluego escribe el nombre del método

Una vez que el cursor esté en el nombre del método (o justo antes):

  • Alt+ Shift+ D-> T(Depurar)
  • Alt+ Shift+ X-> T(Ejecutar)

Después de ejecutar la prueba, puede volver a donde estaba el cursor haciendo lo siguiente:

Alt+Back

Casi obtienes un comportamiento similar a REPL al:

Ctrl+ Shift+ Upy Alt+ Shift+ X-> Ty Alt+Back

También puede establecer rápidamente un punto de interrupción:

Ctrl+ Shift+B

Adam Gent
fuente
3

Haga clic derecho en algún lugar del nombre del método de prueba en el archivo y seleccione "Ejecutar" -> "Prueba de Junit". Lo hago todo el tiempo con Kepler y JUnit 4.

Kyle Dyer
fuente
2

Tuve el mismo problema que otros han tenido al usar Eclipse 3.4.1 y el corredor de pruebas JUnit 4: no pude ejecutar una sola prueba. Pero encontré una sugerencia en otro lugar que resolvió el problema. Mi clase de prueba todavía estaba ampliando junit.framework.TestCase. Cuando dejé de extender TestCase, todo funcionó bien y pude ejecutar pruebas JUnit individuales con el ejecutor de pruebas JUnit 4. Por supuesto, necesitaba que las anotaciones JUnit 4 usaran importaciones estáticas para los métodos de aserción, pero ya lo había hecho, simplemente no había eliminado la herencia de TestCase.

ghirschhorn
fuente
1

Si tiene muchas pruebas en más de un archivo y desea ejecutar solo las pruebas en un archivo en particular, puede hacer clic derecho en ese archivo y seleccionar ejecutar como -> prueba junit. Ahora, si desea ejecutar solo una prueba, contenida en un archivo con muchas pruebas, supongo (no tengo instalado eclipse aquí) que la vista Esquema enumerará todos los métodos de prueba para un archivo, y probablemente podrá haga clic con el botón derecho en un solo método de prueba y ejecútelo como una prueba JUNit.

Espero eso ayude.

Tom
fuente
1

Para ejecutar solo un método de prueba.
En el (explorador de paquetes o explorador de proyectos) despliega la clase. Debería mostrarte todos los métodos. Haga clic con el botón derecho en el método que desea ejecutar, luego seleccione Ejecutar como -> JUnit en el menú contextual.
ingrese la descripción de la imagen aquí

danilo
fuente
0

Para mí, tampoco funciona en Eclipse 3.4.2, aunque funcionó en las versiones anteriores (he intentado ejecutar un método único desde el explorador de paquetes y una prueba de junit única desde la vista de junit)


fuente
Ejecutar un solo método / prueba desde el Explorador de paquetes funciona bien para mí en Eclipse 3.4.2.
Volker Stolz
0

Estoy de acuerdo con el punto de que 3.4.2 ya no funciona como lo hacía en versiones anteriores. Antes, podía hacer clic con el botón derecho en una sola prueba en un grupo de pruebas desde la vista JUnit y ejecutar solo esa prueba. En la última versión insiste en ejecutarlos siempre todos. Por supuesto, la vista ejecuta la prueba en la que hizo clic primero y descarga el resto en un resumen llamado "Pruebas sin raíz". Si alguien se da cuenta de esto, me gustaría saber cómo solucionarlo.

ra9r
fuente
0

Al leer algunos de los comentarios aquí, parece que podría estar interesado en ejecutar las pruebas para el código que cambia a medida que lo cambia, sin perder el enfoque en el código en el que está trabajando. Hay un complemento de eclipse para hacer precisamente eso. Ver infinito .

unigeek
fuente