unitarias pruebas pasar argumentos eclipse maven junit

pruebas - pasar argumentos main java eclipse



Eclipse/Maven: pruebas JUnit no compiladas cuando se ejecutan (9)

Compruebe la ruta "testSourceDirectory" que se puede configurar en su pom.xml. Y luego, agregue la carpeta (configurada en la ruta "testSourceDirectory") a la ruta de compilación del eclipse.

Encuentre la muestra "testSourceDirectory" en pom.xml a continuación:

<build> <testSourceDirectory>src/test/java</testSourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>

Estoy trabajando en un proyecto usando Maven y Eclipse (plugin m2eclipse). Tengo problemas con las pruebas JUnit:

A veces, al ejecutarlos dentro de Eclipse, no se compilan, pero en su lugar se usan los archivos de clase anterior. Cuando elimino los archivos de clase, obtengo ClassNotFoundExceptions en Eclipse. Luego tengo que recompilarlos manualmente usando mvn test-compile u otros objetivos.

También noté que los archivos de clase de las pruebas a veces se colocan en el subdirectorio de classes lugar de las classes de test-classes .

Realmente no puedo entender lo que está mal.

Los archivos de JUnit java están dentro de src/main/java y tienen el nombre correcto ( *Test.java ).

¿Tengo que compilarlos y ejecutarlos siempre a través de Maven? ¿Por qué Eclipse no compila los archivos cuando quiero ejecutarlos? (Curiosamente, a veces lo hace. A veces todo funciona a la perfección).


¡Asegúrate de que haya algún signo de admiración en el ícono de tu proyecto! En mi caso, ignoré que hay un signo de exclamación como: signo de exclamación en el icono del proyecto

Abra la perspectiva de "Marcadores" y luego solucione los problemas según los consejos. lo que muestra la perspectiva de los "Marcadores"

Las clases de prueba junit se pueden ejecutar con éxito después de llamar a "mvn clean test" porque no se refieren al jar ilegible que se advierte en la perspectiva de "Marcadores". Por lo tanto, es fácil ignorarlo.


Además de la respuesta a continuación

  1. Haga clic derecho en la carpeta src / test / java
  2. Seleccione Ruta de compilación -> Configurar carpeta de salida
  3. Introduzca target / test-classes, haga clic en Aceptar

debe verificar que su constructor esté configurado correctamente haciendo clic con el botón derecho en su proyecto y yendo a Propiedades -> Constructor . Si ve que su constructor falta, necesita instalar uno. En mi caso, el proyecto maven tenía una dependencia de AspectJ y cuando usé el plugin Maven Eclipse para construir mi proyecto Eclipse, estaba buscando un constructor AspectJ por defecto. Instalé las herramientas de desarrollo AspectJ y resolvió el problema.

¡Espero que esto ayude!


Eclipse no espera que nada más se arruine con los archivos de clase. Supone que si no ha editado el archivo en eclipse, no ha cambiado y no necesita compilar. Creo que el problema se debe a que eclipse y maven comparten un directorio de salida. A menudo he visto esto si mi compilación mvn falla, habrá eliminado los archivos de clase como parte de los nuevos, limpios pero no compilados. Creo que la mejor solución sería tener directorios de compilación separados para mvn y eclipse, pero nunca me he ocupado de esto.


Enfrenté el mismo problema. Intenté las sugerencias anteriores de configurar la carpeta de salida y Maven> Actualizar proyecto pero tampoco funcionó. Finalmente cambié mi testOutputDirectory a "build / classes" también y ahora las pruebas unitarias son recogidas y ejecutadas.

Finalmente encontré el motivo del problema. En mi pom también habíamos configurado el plugin de compilador maven como se muestra a continuación

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> <outputDirectory>build/classes</outputDirectory> </configuration> </plugin>

La configuración de outputDirectory no es necesaria y fue la causa del problema anterior. Después de eliminar esta etiqueta, los junits se compilan para compilar> la carpeta testclasses y también se ejecutan durante la construcción de maven. Yippee :)


Las explicaciones más probables para el problema al que se enfrenta es que la carpeta de salida de src/test/java no está configurada correctamente.

En lugar de arreglar esta configuración manualmente , puede hacer que m2eclipse lo solucione: simplemente haga clic derecho en el proyecto y elija Maven> Actualizar proyecto .


Para alguien que trabaja en el proyecto de mezcla de java-scala, esto es algo a tener en cuenta. Incluso después de hacer la configuración de la manera que se muestra a continuación,

<build> <testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory> <plugins> ... <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <version>3.3.2</version> <configuration> <testSourceDir>${basedir}/src/test/scala</testSourceDir> <testOutputDir>${basedir}/target/test-classes</testOutputDir> </configuration> </plugin> </plugins> </build>

y al hacer un Maven> Update Project , eclipse respeta el directorio de salida de la carpeta src / test / java en el proyecto, sin embargo, no para la carpeta src / test / scala. (Puede resolver esto haciendo clic con el botón derecho en la carpeta de origen específica y seleccionando Ruta de compilación> Configurar carpeta de salida ... que debería mostrar la ubicación especificada en el pom para el primer caso, sin embargo, no para el caso posterior.

Esto ya es un error conocido para usar scala con m2e como se menciona aquí: http://scala-ide.org/docs/tutorials/m2eclipse/

Advertencia

A partir de marzo de 2013, un error provoca que src / main / scala y src / test / scala utilicen la carpeta de salida predeterminada (target / classes). Esto puede ser confuso> al construir pruebas, ya que sus archivos de clase no terminarán en clases de destino / prueba, como lo harían al construir en la línea de comando. Puede solucionar esto cambiando manualmente la carpeta de salida para src / test / scala.


Tuve el mismo problema con STS Eclipse (variante de desarrollo Spring), m2e y JUnit. La solución fue establecer la carpeta de salida para src/test/java para target/test-classes :

  1. Haga clic derecho en la carpeta src/test/java en el Explorador de paquetes
  2. Seleccione Ruta de compilación -> Configurar carpeta de salida
  3. Introduzca target/test-classes , haga clic en Aceptar

Ahora los cambios en las clases de prueba se compilan correctamente y debería poder ejecutar pruebas JUnit en Eclipse.

El problema es que Eclipse compila las pruebas unitarias a la carpeta de salida predeterminada target/classes mientras que el plugin JUnit intenta ejecutarlas desde test-classes .

Hay algunos duplicados a esta pregunta:


Y otro punto: las clases de prueba JUnit deben estar en src / test / java, no src / main / java, de lo contrario Maven no las detectará correctamente como clases de prueba y se incluirán en el contenedor empaquetado y no en el contenedor de prueba .