Ejecute pruebas unitarias en IntelliJ IDEA desde varios módulos juntos

85

¿Cómo puedo ejecutar todas las pruebas de dos o más módulos IDEA a la vez?

Estoy usando muchos módulos y es importante ejecutar todas las pruebas unitarias con frecuencia y cuando elijo más de una carpeta para ejecutar, ya no hay la opción 'ejecutar' en el menú contextual.

Wojtek Erbetowski
fuente

Respuestas:

113

Mejor manera: (editar después de 3 años)

Incluso hay una forma mejor de lograrlo.

  1. Seleccione el menú "Ejecutar" → "Editar configuraciones ...". Haga clic en el signo más verde en la esquina superior izquierda y seleccione JUnit.

  2. Seleccione "Tipo de prueba" a "Patrón" e ingrese esta expresión regular exactamente como la ve: ^(?!.*IT$).*$(comienza con un símbolo de intercalación ^y termina con un dólar $). Esta expresión regular dice: todas las pruebas que no terminan con TI en su nombre .

  3. Seleccione "Buscar pruebas" a "En todo el proyecto". El directorio de trabajo debe establecerse en el directorio de trabajo del módulo superior (debe establecerse de forma predeterminada).

  4. Ingrese un nombre para su prueba como "Todas las pruebas unitarias". También prefiero marcar la opción "Compartir" para que esta configuración no desaparezca más tarde. Haga clic en Aplicar y Aceptar.

Puede experimentar con esta expresión regular para satisfacer sus necesidades.

Respuesta original:

Es factible, aunque no cómodo.

  1. Seleccione el primer módulo, haga clic con el botón derecho en el test/javadirectorio y "Ejecutar todas las pruebas". Crea configuración de prueba.
  2. Seleccione "Editar configuraciones" y marque "Compartir" en la configuración recién creada para que se guarde.
  3. Seleccione el segundo módulo, "Ejecutar todas las pruebas" en él, y marque "Compartir" también en esta configuración.
  4. En la sección "Antes del lanzamiento", haga clic en "+" y seleccione "Ejecutar otra configuración" y luego seleccione la configuración del primer módulo.

De esta manera, ejecuta las configuraciones en una secuencia y cada configuración obtiene una nueva pestaña. Aún así, mejor que nada.

Tomasz Kalkosiński
fuente
¡Gracias! De lejos, la forma más limpia.
Me pregunto
¡Gracias! Me ahorraste tiempo y esta sigue siendo, con mucho, la forma más inteligente que puedo encontrar de resolver tanto la generación de informes de cobertura múltiple como el problema del administrador de casos unificado de una sola vez .
Fei
Acabo de editar mi anser con una mejor solución @CoderSpinoza
Tomasz Kalkosiński
10
La versión actualizada no es tan buena , si sus casos de prueba utilizan recursos específicos del módulo durante su tiempo de ejecución, todavía prefiero la solución original.
Fei
¿Cómo consigo que esta configuración respete mis dependencias de Gradle? Ahora, falla por faltar a clases de Guava. Al ejecutar las pruebas de un solo módulo, funciona bien.
Jorn
22

Tienes que crear una "Configuración de ejecución":

  1. Ve al menú desplegable en la parte superior, a la derecha del botón "Crear" y haz clic en él.
  2. Seleccione "Editar configuraciones"
  3. Ahora haga clic en el botón "+" para agregar una nueva configuración de ejecución y seleccione JUnit
  4. Luego, al configurar la "Configuración de ejecución", encontrará un menú desplegable "Tipo de prueba", seleccione "Todas las clases en el directorio"
  5. Seleccione el directorio que desea usar como raíz, puede elegir el directorio de nivel superior para su proyecto o cualquiera de los directorios para sus módulos.
  6. Seleccione el módulo IntelliJ desde donde se selecciona la ruta de clases (puede ser el proyecto de nivel superior si tiene una ruta de clases)
Alonso Domínguez
fuente
Gracias por el consejo, aunque no resuelve el problema. La forma perfecta sería seleccionar varios directorios, no solo uno. La solución fundamental es usar patrones, pero aún así, solo se puede modelar el paquete, no los directorios ...
Wojtek Erbetowski
15
En "Tipo de prueba", elija "Todo en paquete" y luego seleccione la casilla de verificación "En todo el proyecto". Eso ejecutará pruebas en todos los módulos.
Martin Odhelius
5
Me gustaría que cada módulo se ejecute con su propio directorio de módulo como directorio de trabajo; eso no parece ser posible, parece usar un solo directorio de módulo para todo.
bacar
@MartinOdhelius esa es la solución más limpia hasta ahora
Hemil
10

Seleccione todos los módulos, haga clic derecho en ellos y elija ejecutar todas las pruebas. Esto creará una configuración llamada "Proyecto completo" que podrá ejecutar de nuevo en cualquier momento.

Encontré esto mejor que la respuesta aceptada porque ejecuta las pruebas unitarias por separado para cada módulo. Si sus casos de prueba utilizan recursos específicos del módulo durante su tiempo de ejecución, la mejor forma de respuesta aceptada no funcionará.

Seleccionar todos los módulos

Seleccionar todos los módulos

Haga clic derecho y elija ejecutar todas las pruebas

Haga clic derecho y elija ejecutar todas las pruebas

Obtenga una nueva configuración de ejecución

Obtenga una nueva configuración de ejecución

Dave Thomas
fuente
Basta con seleccionar más de un módulo en el primer paso.
user7610
2
En mi opinión, esta debería ser la respuesta aceptada. La única reserva que tengo es el uso del término "más fácil". Desafortunadamente, no hay nada fácil en ejecutar configuraciones con Intellij. Hay muchas formas de realizar tareas simples con configuraciones y, por lo general, solo una, si es que funciona. Por lo tanto, su tarea a menudo es iterar a través de todas las diferentes opciones buscando la que funcione. No es nada fácil.
David Sackstein
Esto ejecuta todas las pruebas en el proyecto (proyecto completo), aunque estoy seleccionando una pequeña fracción de los módulos. Esto no es lo que quiero. En mi caso, todos los módulos para los que quiero ejecutar pruebas comparten un paquete común, por lo que puedo editar la configuración resultante de 'Proyecto completo' y agregar el Paquete, que filtra para ejecutar la prueba solo para el subconjunto de módulos.
Albert Vila Calvo
5

Para mí, ambas soluciones no funcionaron o no funcionaron como se esperaba.

Para mí tengo 3 módulos. Las dependencias de mis módulos se ven así

Presentación -> Dominio -> Datos

Solo quería ejecutar todas las pruebas juntas. Así que se me ocurrió el enfoque 'Across module dependencies'

Mi configuración se ve así:

ingrese la descripción de la imagen aquí

Langusten Gustel
fuente
2

Esto funcionó para mí para un proyecto con múltiples módulos.

Cree una nueva configuración de ejecución / depuración de JUnit. Tipo de prueba: 'Todo en paquete' Búsqueda de pruebas: 'Proyecto completo'

También deberá especificar un directorio de trabajo.

Dan
fuente
Eso es lo que terminé haciendo también.
miva2
1

Otro caso no tan obvio es cuando se necesita cobertura de código en más de un proyecto. La solución ingenua sería seleccionar varios proyectos y ejecutar todas las pruebas unitarias en ellos a la vez. Resulta que las pruebas unitarias pueden fallar si la ruta de clases cambia e IntelliJ tiene exactamente una entrada de ruta de clases por configuración de ejecución. En este caso, ejecutar pruebas unitarias en proyectos de forma secuencial es realmente suficiente. Esto se debe a que al final de cada ejecución, IntelliJ (2017.2.5 Community Edition) pregunta si la cobertura recopilada debe reemplazar o debe agregarse a las estadísticas de cobertura recopiladas anteriormente.

gabor
fuente