2009-01-05 18 views
47

Es posible ejecutar pruebas JUnit para varios paquetes al mismo tiempo sin crear manualmente suites de prueba.¿Es posible ejecutar pruebas JUnit desde múltiples paquetes en Eclipse?

Por ejemplo, si tengo la jerarquía:

code.branchone
code.branchone.aaa
code.branchone.bbb
code.branchtwo
code.branchtwo.aaa
code.branchtwo .bbb

¿es posible:

  1. ejecutar todas las pruebas en code.branchone y en paquetes descendentes
  2. Ejecutar todas las pruebas en code.branchone.aaa voz y code.branchtwo.bbb

El problema que veo con la creación manual de pruebas es que cuando el nuevo las pruebas vienen, puede olvidarse de agregarlas.

+5

Ninguna de las respuestas a continuación funciona. Tengo el mismo problema. Puedo ejecutar todas las pruebas en "code.branchone.aaa" pero si voy a la raíz "code.branchone" dice "No se encontró ninguna prueba con el corrector de prueba 'Junit 4'". Tenga en cuenta que "code.branchone" no tiene ninguna fuente. – Bdoserror

+0

Nota de confusión adicional: mi proyecto (creado por otra persona) ya tiene una configuración de inicio que funciona desde un directorio superior en la jerarquía ("código"). Copié esa configuración y la modifiqué para el subdirectorio que quería, todavía no funciona y esa especificación de directorio es la única diferencia entre ellos. – Bdoserror

+0

Hmm, tal vez el problema se deba a que el que funciona se ejecuta desde un directorio que es "subproyecto" (?) En el proyecto principal. p.ej. en esta configuración la configuración de trabajo se ejecuta para "src/it/java": Proyecto (raíz del árbol) con 1 hijo, src/it/java Y el que yo quiero es un subdirectorio de src/it/java, y en La vista de origen del padre común de los subdirectorios que quiero ejecutar no tiene su propia entrada. por ejemplo: Project (root) tiene src/it/java como secundario, y srt/it/java tiene 2 hijos, sub1.subA y sub1.subB, y quiero ejecutar todas las pruebas desde src/it/java/sub1 – Bdoserror

Respuesta

1

Creo que puede agregar todos sus paquetes de prueba a un solo directorio. Si hace clic derecho en este directorio, entonces debería encontrar la opción "ejecutar como -> prueba JUnit" disponible. Esto ejecutará todas las pruebas contenidas en el directorio y captará todo lo que haya agregado. Cualquier prueba nueva se pone allí con el resto de ellos y cualquier nombre de paquete que tengas no importa. Esperamos que ayuda

1

Claro, haga clic en los paquetes que desea, y seleccione Ejecutar como ... JUnit Test

+3

Esto solo funciona cuando se selecciona un paquete. – SpaceTrucker

1

En Eclipse, en su depuración configuraciones/run dispone de las siguientes opciones:

  1. Ejecutar una sola prueba
  2. Ejecutar todas las pruebas en el proyecto, paquete o carpeta seleccionada fuente

creo que la segunda opción es su amigo en este caso.

+14

pero no le permite ejecutar pruebas desde diferentes paquetes –

3

Estoy seguro de que puede modificar esto un poco. Haga una Colección de la propiedad CLASSES_DIR y buclee sobre ella en el método findClasses. (Junit4)

http://burtbeckwith.com/blog/?p=52

+0

También lo usé de una manera diferente a la que sugirió, usando anotaciones. ¡Este enlace es realmente útil! – oshai

18

Otra manera: (. En su Eclipse, no aquí :))

Haga clic en el triángulo negro indica mediante el rectángulo rojo en la imagen siguiente

enter image description here

Luego abra las configuraciones de ejecución, cree una nueva configuración y luego configure "Ejecutar todas las pruebas ..." como se ejemplifica en la imagen a continuación.

enter image description here

+4

Solo en el src (raíz de la ruta de clases) ejecutará todas las pruebas unitarias del proyecto. Si se elige en un paquete particular, solo ejecuta las pruebas dentro del paquete elegido, pero no las pruebas de los paquetes secundarios. – Heri

22

Sí, es posible. La forma más fácil para mí, al menos, es agregar una clase de suite de prueba.Puede tener este aspecto:.

package tests; 

import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 
import org.junit.runners.Suite.SuiteClasses; 

import tests.message.ATest; 
import tests.validator.BTest; 
import tests.validator.CTest; 
import tests.validator.DTest; 

@RunWith(Suite.class) 
@SuiteClasses({ ATest.class, 
     BTest.class, 
     CTest.class, 
     DTest.class }) 
public class AllTests { 

} 

Esto le permitirá poner a prueba cualquier clase que se importa no importa qué paquete está en Para ejecutar este eclipse simplemente haga clic derecho la clase alltests y ejecutarlo como prueba unitaria . A continuación, ejecutará todas las pruebas que defina en @SuiteClasses.

Esto funcionará con las fuentes vinculadas también, lo uso todo el tiempo.

+3

Supongo que no hay forma de usar nombres de paquetes o comodines con '@ SuiteClasses', ¿verdad? He visto http://johanneslink.net/projects/cpsuite.jsp, http://burtbeckwith.com/blog/?p=52 y http://stackoverflow.com/questions/1293880/run-all- tests-in-a-source-tree-not-a-package, pero ninguno es tan bueno de una solución como yo esperaba. – iX3

+0

No estoy seguro, nunca lo intenté. – span

+0

Esto me ayudó a resolver un problema en el que 2 casos de prueba se interferían entre sí (por separado, eran verdes pero fallaban cuando se ejecutaban en una secuencia). Buen truco :-) – rlegendi

9

Tal vez no es exactamente lo que la pregunta original, pero se puede ejecutar fácilmente todas las pruebas de un proyecto conjunto , simplemente haga clic en el proyecto -> Ejecutar Como JUnitTest. No se preocupe por dónde residen las clases anotadas, se escaneará.

Esto no funciona si se aplica a la carpeta test-src o a un paquete con subpaquetes. Es una pena en realidad -.-

+3

IMO esta es la respuesta correcta. – Heri

Cuestiones relacionadas