software - pruebas unitarias con junit en eclipse
ClassNotFoundException al ejecutar pruebas de unidad JUnit dentro de Eclipse(usando Maven) (6)
Acabo de actualizar mi SpringSource Tools Suite (STS, una variante IDE de Eclipse) a la última versión (v3.6.1). Entonces todas las pruebas unitarias de JUnit no se pueden ejecutar de nuevo. Estoy recibiendo este error:
Class not found ClassToTest
java.lang.ClassNotFoundException: ClassToTest
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
Según este blog: ClassNotFoundException cuando se ejecutan pruebas de unidades JUnit dentro de Eclipse (usando Maven) , se debe a una mala configuración del complemento Maven en Eclipse. Sin embargo, en STS 3.6.2 no puedo encontrar esta opción "Incluir módulos" en el complemento de Maven. ¿Cómo puedo solucionar este problema y volver a habilitar mis pruebas unitarias?
Como mvn test-compile
, intente ejecutar mvn test-compile
(ya sea en Eclipse o desde la línea de comandos), luego intente ejecutar la prueba Junit dentro de Eclipse.
Creo que encontré la solución, al menos esto me funcionó: haga clic derecho en el proyecto y elija ''Maven'' -> ''Actualizar dependencias''
Luego, cuando lo intenté, no obtuve la excepción ClassNotFoundException.
Nosotros también enfrentamos la misma excepción ClassNotFoundException al intentar ejecutar la clase de prueba JUnit. Pero cuando intentamos usar los siguientes pasos, comenzó a ejecutarse con éxito.
- Seleccione su proyecto.
- Haga clic en la opción de proyecto que se muestra en la barra de herramientas en el IDE de eclipse.
- Seleccione "limpiar".
- Ahora intenta ejecutar el archivo de prueba.
OK parece que tendré que responder esta pregunta yo solo.
La razón principal de este problema es el complemento eclipse de m2eclipse. La nueva versión de este complemento no admite módulos anidados en un proyecto. Si realmente necesitamos ver varios módulos, tenemos que eliminar el anterior del explorador de paquetes y crear un conjunto de trabajo e importar el proyecto nuevamente usando la opción "importar proyectos de Maven existentes". El asistente de importación de eclipse abrirá una ventana y le preguntará qué módulo desea importar. Luego podemos seleccionar todos los módulos y finalizar la importación. Como resultado, el conjunto de trabajo contendrá todos los módulos de su proyecto y tratará cada módulo como un proyecto separado, aunque en el espacio de trabajo, sus módulos aún están en un solo proyecto. Al hacer esto, resuelve todos los problemas que he encontrado en Eclipse relacionados con classpath, como no poder buscar una clase o no poder ejecutar las pruebas unitarias y obtener una java.lang.ClassNotFoundException.
Para referencia, aquí hay un artículo que le enseña cómo crear un conjunto de trabajo : Conjunto de trabajo
Creo que puede importar el proyecto sin crear un nuevo conjunto de trabajo, pero el conjunto de trabajo mantendrá todos los módulos que pertenecen a su proyecto en un solo conjunto para que sea más fácil de organizar.
Desearía tener la respuesta hace dos meses para no haber pasado mucho tiempo buscando una solución.
Probé todo lo mencionado aquí y en otros posts. Algunas de las soluciones que las personas ofrecieron fueron:
- Cambiar la carpeta de salida para las clases de prueba.
- Cree un constructor personalizado para el proyecto que ejecutaría test-compile desde Maven.
- Mueva las dependencias de Maven hacia arriba en la lista de pedidos y exportaciones en la ruta de compilación del proyecto.
Hubo muchos, muchos más, pero el que encontré para trabajar fue el siguiente:
- Cerrar el entorno de desarrollo.
- Eliminar los archivos jar utilizados por el proyecto de mi repositorio local de Maven.
- Abra el IDE.
- Construye el proyecto.
- Ejecutar la prueba.
Después de horas de golpear mi cabeza contra mi teclado y seguir las soluciones sugeridas, ¡esta funcionó!
Todavía hay algunos retrocesos en el complemento m2e actual. Los casos de prueba de unidad no se pudieron ejecutar ya que sus proyectos incluidos se agruparon en un conjunto de trabajo. Los siguientes pueden ayudar:
- Haga clic derecho en el proyecto incluyendo junit-tests.
- Seleccione Maven -> Deshabilitar resolución de área de trabajo
Intenta entonces ejecutar tu prueba de nuevo.