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 una JUnit
biblioteca en la ruta de clases aunque estoy usando maven, y la biblioteca JUnit está en la dependencia de POM.
Ya intenté limpiar el proyecto y creé un nuevo caso de prueba de JUnit usando el complemento JUnit para Eclipse, pero sigo recibiendo el mismo error.
mvn clean test
una vez que compilará todas las clases de pruebaRespuestas:
Esto parece ocurrir porque solo se compila el código fuente cuando lo usa
mvn clean compile
(estoy usando maven 3.1.0, así que no estoy seguro de si siempre se comportó así).Si ejecuta
mvn test
, el código de prueba también se compilará, pero luego ejecutará las pruebas (lo que puede no ser deseable de inmediato si está intentando ejecutarlas a través de Eclipse). La forma de evitar esto es agregartest-compile
a su secuencia de comandos de Maven haces amvn clean
. Por ejemplo, correríamvn clean compile test-compile
.fuente
Tuve un problema similar con mis pruebas y encontré en algún lugar de la Web que tienes que ir a Build Path en las propiedades de tu proyecto y mover Maven Dependencies por encima de JRE System Library . Eso parece haber funcionado para mí.
fuente
Enfrenté el mismo problema y pude solucionarlo usando la respuesta de @ slomek, pero el problema resurgió después de eso.
Finalmente lo arreglé agregando la carpeta de salida de mi proyecto a la configuración de ejecución de la prueba JUnit. Los pasos son:
Project properties -> Java Build Path -> Default output folder
<project-folder>/bin
Run -> Run Configurations...
Classpath
pestañaUser Entries
, incluso si el proyecto ya está incluido allíAdvanced -> Add folder
para agregar la carpeta de salidaEste problema puede deberse a una configuración extraña del proyecto en Eclipse, por ejemplo, carpeta de origen con proyectos maven anidados importados como un solo proyecto / carpeta (al menos así fue como se configuró mi proyecto).
fuente
Si este problema ocurre solo en Eclipse, ejecutar el comando Proyecto -> Limpiar ... en el proyecto seleccionado puede ayudar.
fuente
Después de haber probado todo aquí sin mejorar, resolví mi problema reiniciando Eclipse
fuente
Solucioné mi problema ejecutando maven update. Haga clic derecho en proyectar su proyecto> Maven> Actualizar proyecto
fuente
En mi caso, tenía una estructura de directorio maven incorrecta.
Que debería ser como:
/ src / test / java / com.myproject.server.MyTest
Después de que arreglé eso, todo funcionó a la perfección.
fuente
En mi caso, solo los siguientes pasos me ayudaron a resolver este problema:
fuente
Anteriormente, en este caso, siempre hice mvn
eclipse:eclipse
y reinicié mi Eclipse y funcionó. Después de migrar a GIT, dejó de funcionar para mí, lo cual es algo extraño.El problema básico aquí es que el Sr. Eclipse no encuentra la clase compilada. Luego, configuré la carpeta de salida como Project / target / test-classes que se genera de forma predeterminada
mvn clean install
sin omitir la prueba y procedí con la siguiente solución alternativa:Opción 1: establecer classpath para cada caso de prueba
Eclipse -> Ejecutar -> Ejecutar configuraciones -> en JUnit-> seleccionar mytest -> 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-> seleccione mytest -> en la pestaña classpath -> Seleccione Entradas de usuario-> Avanzado-> Agregar variables de classpath-> Seleccione Junit_test_cases_cp-> ok- > Aplicar-> Ejecutar
Esto es lo único que me funciona actualmente después de probar todas las sugerencias en línea.
fuente
Tuve el mismo problema con un proyecto de Gradle con un SourceSet de prueba con dos directorios de recursos.
Este fragmento proviene de main-module.gradle y agrega un directorio de recursos al SourceSet de prueba:
Al hacer esto, tenía dos directorios de recursos relacionados con el SourceSet de prueba del módulo principal del proyecto:
../other-module/src/test/resources src / test / resources (relativo a la carpeta del módulo principal, agregado automáticamente por el complemento de 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 esta razón no se copió ningún .class en el directorio bin, donde JUnit estaba buscando las clases. La ClassNotFoundException desapareció simplemente cambiando el nombre de uno de los dos archivos.
fuente
NoClassDefFoundError realmente significa que no puede iniciar la clase. No tiene nada que ver con encontrar la clase. Recibí este error al llamar a trim () en una cadena nula.
JUnit no mostrará NullPointerException. La cadena no es nula cuando se ejecuta normalmente porque estoy obteniendo la cadena de un archivo de propiedades que no está disponible para pruebas.
Mi consejo es que elimines las piezas de la clase hasta que tus pruebas empiecen a aprobar. Entonces puede determinar qué línea está dando el error.
fuente
Tuve un problema similar con mi Eclipse Helios que depuraba Junits. Mi problema fue un poco diferente, ya que pude ejecutar Junits con éxito, pero cuando recibía ClassNotFoundException mientras depuraba los mismos JUNIT.
He probado todo tipo de soluciones diferentes disponibles en Stackoverflow.com y foros en otros lugares, pero nada parece funcionar. Después de golpearme la cabeza con este problema 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 una sobrecarga adicional de importar los proyectos y todo tipo de configuración que haya realizado, pero esto seguramente resolverá este problema.
Espero que esto ayude.
fuente
Estos pasos funcionaron para mí.
fuente
1- mvn eclipse: eclipse
2- proyecto limpiar todos los proyectos
3- reiniciar
fuente
Vale la pena mencionar como otra respuesta que si está usando eGit, y su classpath se actualiza debido a, por ejemplo, una herramienta de cobertura de prueba como Clover, a veces hay un problema de limpieza que no elimina por completo el contenido de
/path/to/git/repository/<project name>/bin/
Básicamente, utilicé la Vista de registro de errores de Eclipse, identifiqué qué estaba causando problemas durante este esfuerzo de limpieza, navegué al directorio de origen y eliminé manualmente el
<project name>/bin
directorio. Una vez que terminó, volví a Eclipse y actualicé (F5
) mi proyecto y el error desapareció.fuente
Compruebe si su proyecto se abre como un proyecto de Maven y no solo como un proyecto Java normal. En realidad, es una obviedad, pero esa es exactamente la misma razón por la que podría perderse.
fuente
También puede deberse a "[ERROR] No se proporciona un compilador en este entorno. ¿Quizás está ejecutando un JRE en lugar de un JDK?"
fuente
Me había enfrentado al mismo problema. Lo resolví eliminando la dependencia del jar externo de JUnit que agregué mediante la descarga de Internet externamente. Pero luego fui a proyecto-> propiedades-> ruta de compilación-> agregar biblioteca-> junit-> elegí la versión (ex junit4) -> aplicar.
Añadió automáticamente la dependencia. resolvió mi problema.
fuente
Hacer un cambio ficticio y guardar la clase de prueba puede resolver el problema. Construirá el .class automáticamente
fuente
Parece un problema de compilación. Ejecute el proyecto como prueba Maven, luego Ejecutar como prueba JUnit.
fuente
Para el proyecto que no usa maven: esto funcionó para mí https://ihategeek.wordpress.com/2012/04/18/eclipse-junit-test-class-not-found/
Agregar el jre y el proyecto src en la parte inferior en Order y exportar en la ruta de compilación
fuente
Por favor, compruebe si ha agregado junit4 como dependencia.
p.ej
fuente
Puede que hayas olvidado colocar la clase Main y la clase Test Case en / src / test / java. Compruébalo una vez.
fuente