maven - test - package org nfunk jep does not exist
Problema de compilaciĆ³n de Maven 3 y JUnit 4: el paquete org.junit no existe (14)
Estoy intentando construir un proyecto Java simple con Maven. En mi pom-file declaro JUnit 4.8.2 como la única dependencia. Todavía Maven insiste en usar JUnit versión 3.8.1. ¿Cómo lo arreglo?
El problema se manifiesta en una falla de compilación: "package org.junit no existe". Esto se debe a la declaración de importación en mi código fuente. El nombre correcto del paquete en JUnit 4. * es org.junit. * Mientras está en la versión 3. * es junit.framework. *
Creo que encontré documentación sobre la raíz del problema en http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html pero los consejos allí parecen estar destinados a los expertos de Maven. No entendí qué hacer.
¿Cómo declaraste la versión?
<version>4.8.2</version>
Tenga en cuenta el significado de esta declaración que se explica aquí (vea NOTAS) :
Al declarar una versión "normal" como 3.8.2 para Junit, internamente esto se representa como "permitir cualquier cosa, pero prefiere 3.8.2". Esto significa que cuando se detecta un conflicto, Maven puede usar los algoritmos de conflicto para elegir la mejor versión. Si especifica [3.8.2], significa que solo se usará 3.8.2 y nada más.
Para forzar el uso de la versión 4.8.2 prueba
<version>[4.8.2]</version>
Como no tiene otras dependencias en su proyecto, no debería haber conflictos que causen su problema. La primera declaración debería funcionar para usted si puede obtener esta versión de un repositorio. ¿Heredas dependencias de un pom padre?
@Dennis Roberts: Tenías toda la razón: mi clase de prueba se encontraba en src / main / java. También el valor del elemento "scope" en el POM para JUnit fue "prueba", aunque así es como se supone que es. El problema fue que había sido descuidado al crear la clase de prueba en Eclipse, lo que resultó en que se creara en src / main / java en lugar de src / test / java. Esto se volvió más fácil de ver en la vista Explorador de proyectos de Eclipse después de ejecutar "mvn eclipse: eclipse", pero tu comentario fue lo que me hizo verlo primero. Gracias.
Agregue esta dependencia a su archivo pom.xml
:
http://mvnrepository.com/artifact/junit/junit-dep/4.8.2
<!-- https://mvnrepository.com/artifact/junit/junit-dep -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit-dep</artifactId>
<version>4.8.2</version>
</dependency>
Mi caso fue un simple descuido.
Pongo la declaración de dependencia JUnit dentro de <dependencies>
bajo el nodo <dependencyManagement/>
lugar de <project/>
en el archivo POM. La forma correcta es:
<project>
<!-- Other elements -->
<dependencies>
<!-- Other dependencies-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
</dependencies>
<project>
Por defecto, maven mira estas carpetas para java y clases de prueba respectivamente - src / main / java y src / test / java
Cuando se especifica src con las clases de prueba en el origen y se menciona el alcance para la dependencia junit en pom.xml como prueba - org.unit no será encontrado por maven.
Solo para tener una respuesta con la solución completa para ayudar a los visitantes:
Todo lo que necesita hacer es agregar la dependencia de junit a pom.xml
. No se olvide de la <scope>test</scope>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
También me encontré con este problema: estaba intentando extraer un objeto de una fuente y estaba trabajando en el código de prueba, pero no en el código src. Para seguir probando, copié un bloque de código de la prueba y lo dejé caer en el código src, y luego eliminé inmediatamente las líneas JUnit, así que solo tenía que ver cómo la prueba estaba tirando del objeto. Entonces, de repente, mi código no compilaría.
El problema era que cuando solté el código, Eclipse resolvió amablemente todas las clases, así que recibí llamadas de JUnit provenientes de mi código src, que no era el correcto. Debería haber notado las advertencias en la parte superior sobre las importaciones no utilizadas, pero me olvidé de verlas.
Una vez que eliminé las importaciones de JUnit sin usar en mi archivo src, todo funcionó maravillosamente.
Tenía mis archivos en los lugares correctos, y simplemente al eliminar <scope>test</scope>
de la entrada de dependencia JUnit resolvió el problema (estoy usando JUnit 4.12). Creo que con el alcance de la test
la dependencia solo se ignoraba durante la fase de compilación. Ahora todo funciona, incluso cuando llamo mvn test
.
Tuve un problema bastante similar en un proyecto "prueba-utils" (agregar funciones, reglas y aserciones a JUnit) hijo de un proyecto principal que inyecta dependencias. La clase que depende del paquete org.junit.rules estaba en src / main / java.
Así que agregué una dependencia en junit sin alcance de prueba y resolvió el problema:
pom.xml del proyecto test-util:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
pom.xml del proyecto principal:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
Tuve un problema similar al compilar Eclipse mi código muy bien pero Maven falló al compilar las pruebas cada vez, a pesar de que JUnit estaba en mi lista de dependencias y las pruebas se encontraban en / src / test / java /.
En mi caso, tenía una versión incorrecta de JUnit en mi lista de dependencias. Escribí pruebas JUnit4 (con anotaciones) pero tenía JUnit 3.8.x como mi dependencia. Entre la versión 3.8.xy la 4 de JUnit cambiaron el nombre del paquete de junit.framework a org.junit, razón por la cual Maven aún rompe la compilación utilizando un jar JUnit.
Todavía no estoy del todo seguro de por qué Eclipse compiló con éxito. Debe tener su propia copia de JUnit4 en algún lugar de la ruta de clases. Espero que esta solución alternativa sea útil para las personas. Llegué a esta solución después de seguir el enlace de Arturo arriba.
Yo también tuve el mismo problema que se muestra a continuación.
Para resolver el problema, las siguientes líneas se agregan a dependencies
sección de dependencies
en el nivel de la aplicación build.gradle.
compile ''junit:junit:4.12''
androidTestCompile ''com.android.support.test:runner:0.5''
La creación de Gradle luego se informó después de la advertencia.
Warning:Conflict with dependency ''com.android.support:support-annotations''.
Resolved versions for app (25.1.0) and test app (23.1.1) differ.
See http://g.co/androidstudio/app-test-app-conflict for details.
Para resolver esta advertencia, la siguiente sección se agrega al build.gradle del nivel de la aplicación.
configurations.all {
resolutionStrategy {
force ''com.android.support:support-annotations:23.1.1''
}
}
Yo tuve el mismo problema. Todo lo que hice fue: del archivo pom.xml eliminé la dependencia para junit 3.8 y agregué una nueva dependencia para junit 4.8. Luego hice maven clean y maven install. Lo hizo el truco. Para verificar, después de la instalación de maven, fui a las dependencias project-> properties-build path-> maven y vi que ahora el jar de junit 3.8 ya no está. En cambio, junit 4.8 jar está en la lista. ¡¡guay!!. Ahora mi prueba funciona como un encanto. Espero que esto ayude de alguna manera ...
eliminando la etiqueta del alcance en pom.xml para junit trabajado ...
mi problema era una línea dentro de mi pom.xml
. Tenía la línea <sourceDirectory>${basedir}/src</sourceDirectory>
eliminando esta línea que hizo que Maven usara carpetas regulares de estructura que resuelven mi problema