Pregunta Clase no encontrada Excepción al ejecutar la prueba JUnit


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)

He intentado agregar JUnit biblioteca en el classpath aunque estoy usando maven, y la biblioteca JUnit está en la dependencia 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.


74
2017-07-08 06:06


origen


Respuestas:


Esto parece ocurrir porque solo el código fuente se está compilando cuando usa mvn clean compile (Estoy usando maven 3.1.0 así que no estoy seguro si siempre se comportó así).

Si tu corres mvn test, el código de prueba se compilará también, pero luego ejecutará las pruebas (que pueden no ser inmediatamente deseables si está intentando ejecutarlas a través de Eclipse). La forma de solucionar esto es agregar test-compile a su secuencia de comandos Maven cada vez que haces un mvn clean. Por ejemplo, correría mvn clean compile test-compile.


75
2017-07-21 02:58



Tuve un problema similar con mis pruebas y encontré en algún lugar de la Web, que tiene que ir a Construir camino en las propiedades de tu proyecto y muévete Dependencias Maven encima Biblioteca del sistema JRE. Eso parece haber funcionado para mí.


82
2017-11-14 09:05



Enfrenté el mismo problema y pude solucionarlo usando @ slomek's responder 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
    • Usualmente esto es <project-folder>/bin
  • Ir Run -> Run Configurations...
  • Haga clic en la configuración de ejecución de la prueba de la unidad y haga clic en Classpath lengüeta
  • 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

Este problema puede deberse a una configuración de proyecto extraña en Eclipse, p. carpeta de origen con proyectos maven anidados importados como un único proyecto / carpeta (al menos así fue como se configuró mi proyecto).


15
2017-11-21 13:34



Si este problema ocurre solo en Eclipse, puede ser útil ejecutar el comando Proyecto -> Limpiar ... en el proyecto seleccionado.


9
2018-03-04 06:57



Después de haber intentado todo aquí sin ninguna mejora, resolví mi problema simplemente reiniciando Eclipse


8
2017-09-28 07:40



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.


3
2017-10-06 15:47



En mi caso, solo los próximos pasos me ayudaron a resolver este problema:

  1. Proyecto-> propiedades-> Configuración de ejecución / depuración.
  2. En "Configuración de lanzamiento para '.....'" seleccione clases / proyectos
  3. Editar -> Classpath -> "Restaurar entradas predeterminadas"

1
2018-06-01 13:37



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 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 generado por defecto por mvn clean install sin saltear la prueba y procedió con la siguiente solución:

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 ve a Eclipse-> Ejecutar-> Ejecutar Configuraciones-> JUnit-> seleccionar mitest-> bajo la pestaña classpath -> Seleccionar entradas de usuario-> Avanzado-> Agregar variables classpath-> Seleccionar Junit_test_cases_cp-> ok-> Apply-> Run

Esto es lo único que funciona actualmente para mí después de probar todas las sugerencias en línea.


1
2018-04-08 08:20



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.


1
2018-05-18 09:50



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 Stackoverflow.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


0
2017-07-31 07:11



Estos pasos funcionaron para mí.

  • Eliminar el contenido del repositorio local de Maven.
  • correr mvn instalación limpia en la línea de comando. (cd al directorio pom).
  • Build Project en Eclipse.

0
2018-03-03 10:10