java - test - junit tutorial español
Clase no encontrada Excepción al ejecutar la prueba JUnit (16)
Recibo este error al ejecutar la prueba JUnit en Eclipse:
Class not found com.myproject.server.MyTest
java.lang.ClassNotFoundException: com.myproject.server.MyTest
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
Intenté agregar la biblioteca JUnit
en classpath aunque estoy usando maven, y la biblioteca JUnit está en la dependencia de POM.
Ya he intentado limpiar el proyecto y he creado un nuevo caso de prueba JUnit utilizando el complemento JUnit para Eclipse, que sigue recibiendo el mismo error.
1- mvn eclipse: eclipse
2- proyecto limpiar todos los proyectos
3- reiniciar
Anteriormente, en este caso, siempre he eclipse:eclipse
mvn eclipse:eclipse
y reinicié mi Eclipse y funcionó. Después de migrar a GIT, dejó de funcionar para mí, lo cual es un tanto extraño.
El problema básico aquí es que el Sr. Eclipse no encuentra la clase compilada. Luego, establezco la carpeta de salida como Project / target / test-classes que es generada de forma predeterminada por mvn clean install
sin omitir la prueba y se procede con la siguiente solución alternativa:
Opción 1: establecer classpath para cada caso de prueba
Eclipse -> Ejecutar -> Ejecutar configuraciones -> en JUnit-> seleccionar mitest -> en la pestaña classpath-> Seleccionar entradas de usuario-> Avanzado-> Agregar carpeta-> Seleccionar-> Aplicar-> Ejecutar
Opción 2: crear la variable classpath e incluirla en classpath para todos los casos de prueba
Eclipse -> Windows -> Variables de Classpath -> Nuevo -> [Nombre: Junit_test_cases_cp | ruta:] -> ok Luego vaya a Eclipse-> Ejecutar-> Ejecutar Configuraciones-> JUnit-> seleccionar mitest-> en la pestaña classpath -> Seleccionar entradas de usuario-> Avanzado-> Agregar variables classpath-> Seleccionar Junit_test_cases_cp-> ok- > Aplicar-> Ejecutar
Esto es lo único que funciona actualmente para mí después de probar todas las sugerencias en línea.
Compruebe si su proyecto se abre como un proyecto Maven y no solo como un proyecto Java normal. En realidad, no es obvio, pero esa es exactamente la misma razón por la que podrías extrañarlo.
Después de haber intentado todo aquí sin ninguna mejora, resolví mi problema simplemente reiniciando Eclipse
En mi caso, solo los próximos pasos me ayudaron a resolver este problema:
- Proyecto-> propiedades-> Configuración de ejecución / depuración.
- En "Configuración de lanzamiento para ''.....''" seleccione clases / proyectos
- Editar -> Classpath -> "Restaurar entradas predeterminadas"
En mi caso, tenía una estructura de directorios maven equivocada.
Que debería ser como:
/ src / test / java / com.myproject.server.MyTest
Después de arreglar eso, todo funcionó como un amuleto.
Enfrenté el mismo problema y pude solucionarlo con la answer @ slomek, pero el problema resurgió después de eso.
Finalmente lo solucioné agregando la carpeta de salida de mi proyecto a la configuración de ejecución de la prueba JUnit. Los pasos son:
- Encuentra la carpeta de salida de tu proyecto desde
Project properties -> Java Build Path -> Default output folder
delProject properties -> Java Build Path -> Default output folder
- Por lo general, esto es
<project-folder>/bin
- Por lo general, esto es
- Vaya a
Run -> Run Configurations...
- Haga clic en la configuración de ejecución de la prueba de la unidad y haga clic en la pestaña
Classpath
- Agregue explícitamente la carpeta de salida de su proyecto en
User Entries
, incluso si el proyecto ya está incluido allí- Haga clic en
Advanced -> Add folder
para agregar la carpeta de salida
- Haga clic en
Este problema puede deberse a una configuración de proyecto extraña en Eclipse, por ejemplo, la carpeta de origen con proyectos maven anidados importados como un único proyecto / carpeta (al menos así fue como se configuró mi proyecto).
Esto parece ocurrir porque solo el código fuente se está compilando cuando usas mvn clean compile
(estoy usando maven 3.1.0 así que no estoy seguro si siempre se comportó así).
Si ejecuta la mvn test
, el código de prueba se compilará también, pero luego ejecutará las pruebas (lo que puede no ser inmediatamente deseable si está intentando ejecutarlas a través de Eclipse). La forma de evitar esto es agregar test-compile
a la secuencia de comandos de Maven cada vez que haces un mvn clean
. Por ejemplo, ejecutaría mvn clean compile test-compile
.
Estos pasos funcionaron para mí.
- Eliminar el contenido del repositorio local de Maven.
- ejecutar mvn clean install en la línea de comando. (cd al directorio pom).
- Build Project en Eclipse.
Puede que se haya olvidado de colocar la clase principal y la clase de caso de prueba en / src / test / java. Compruébalo una vez.
Si este problema ocurre solo en Eclipse, puede ser útil ejecutar el comando Proyecto -> Limpiar ... en el proyecto seleccionado.
También puede deberse a "[ERROR] No se proporciona ningún compilador en este entorno. ¿Quizás está ejecutando un JRE en lugar de un JDK?"
Tuve el mismo problema con mi Eclipse Helios que depuración de Junits. Mi problema era un poco diferente ya que pude ejecutar Junits con éxito pero cuando recibí ClassNotFoundException mientras depuraba los mismos JUNIT.
He intentado todo tipo de soluciones diferentes disponibles en .com y foros en otros lugares, pero parece que nada funciona. Después de golpear mi cabeza con estos problemas durante casi dos días, finalmente descubrí la solución.
Si ninguna de las soluciones parece funcionar, simplemente elimine la carpeta .metadata creada en su espacio de trabajo. Esto crearía un costo adicional de importación de los proyectos y todo tipo de configuración que haya realizado, pero seguramente resolverán estos problemas.
Espero que esto ayude
Tuve el mismo problema con un proyecto de Gradle con un SourceSet de prueba con dos directorios de recursos.
Este fragmento proviene de un módulo principal.gradle y agrega un directorio de recursos a la prueba SourceSet:
sourceSets {
test {
resources {
srcDir(''../other-module/src/test/resources'')
}
}
}
Al hacer esto, tuve dos directorios de recursos relacionados con la prueba SourceSet del proyecto main-module:
../other-module/src/test/resources src / test / resources (relativo a la carpeta del módulo principal, agregado automáticamente por el complemento java)
Descubrí que si tenía dos archivos con el mismo nombre en ambos directorios de origen, algo en la etapa de recursos del proceso salió mal. Como resultado, no se inició ninguna compilación y, por este motivo, no se copió ninguna clase en el directorio bin, donde JUnit estaba buscando las clases. La ClassNotFoundException desapareció simplemente al cambiar el nombre de uno de los dos archivos.
Tuve un problema similar con mis pruebas y encontré en algún lugar de la Web, que debe ir a Build Path en las propiedades de su proyecto y mover Dependencias Maven por encima de la Biblioteca del Sistema JRE . Eso parece haber funcionado para mí.
Vale la pena mencionar como otra respuesta que si está utilizando eGit, y su classpath se actualiza por decir, una herramienta de cobertura de prueba como Clover, que a veces hay un problema de limpieza que no elimina por completo el contenido de /path/to/git/repository/<project name>/bin/
Esencialmente, utilicé la Vista de registro de errores de Eclipse, identifiqué qué causaba problemas durante este esfuerzo de limpieza, navegué hasta el directorio fuente y borré manualmente el directorio <project name>/bin
. Una vez que terminé, volví a Eclipse y actualicé ( F5
) mi proyecto y el error desapareció.