Escribí un método de prueba simple con JUnit 5:
public class SimlpeTest {
@Test
@DisplayName("Some description")
void methodName() {
// Testing logic for subject under test
}
}
Pero cuando corro mvn test
, tengo:
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running SimlpeTest
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
De alguna manera, surefire no reconoció esa clase de prueba. Mi pom.xml
apariencia es:
<properties>
<java.version>1.8</java.version>
<junit.version>5.0.0-SNAPSHOT</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit5-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>snapshots-repo</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<updatePolicy>always</updatePolicy>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
¿Alguna idea de cómo hacer que esto funcione?
Respuestas:
El
maven-surefire-plugin
, a día de hoy, no tiene soporte completo de JUnit 5 . Hay un problema abierto sobre la adición de este soporte en SUREFIRE-1206 .Como tal, debe utilizar un proveedor personalizado . Uno ya ha sido desarrollado por el equipo de JUnit; de la guía del usuario , debe agregar el
junit-platform-surefire-provider
proveedor y laTestEngine
implementación de la nueva API:Además, asegúrese de declarar la
junit-jupiter-api
dependencia con un alcance detest
:fuente
maven-surefire-plugin v2.21.0
funciona bien conjunit-jupiter-engine v5.2.0
yjunit-platform-surefire-provider v1.2.0
Actualización 2
El problema se ha solucionado en Maven Surefire Plugin v2.22.0
La nueva versión está disponible en Maven Central Repository.
Maven
Gradle
Actualizar
Como señaló Marian , la última versión de JUnit 5 Platform Surefire Provider (1.2.0) es compatible con la última versión de Maven Surefire Plugin (2.21.0) :
Ejemplo
pom.xml
TestScenario.java
Salida (instalación limpia de mvn)
Forma más sencilla hasta hoy:
fuente
De la documentación de JUnit 5 :
Además puedes leer en la
maven-surefire-plugin
documentación :Así que eso es suficiente para ejecutar las pruebas de JUnit 5:
En mi espacio de GitHub, agregué un proyecto de maven de muestra en funcionamiento que puede navegar / clonar.
URL: https://github.com/ebundy/junit5-minimal-maven-project
fuente
Me encontré con este problema con JUnit5 y Maven, pero también noté que, incluso si solo se agrega junit-jupiter-engine como dependencia, las pruebas se ejecutarían en algunos proyectos, no en otros . Y veo el mismo patrón en los comentarios aquí: En el comentario de @Alex anterior, puede ver que no tiene ningún problema, incluso con versiones anteriores de surefire / junit / platform.
Después de rascarme la cabeza durante algún tiempo, me di cuenta de que aquellos proyectos en los que las pruebas no se ejecutarían eran aquellos en los que los nombres de los métodos de prueba no contenían la palabra "prueba". Aunque esto no es obligatorio por http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html
En otras palabras: solo con
esta
NO se ejecutará, mientras que
¡Se ejecutará!
Este problema se desarrolla como una muñeca rusa ...
De todos modos, ¡+1 para @Mikhail Kholodkov cuya respuesta actualizada soluciona todos los problemas a la vez!
fuente
Encontré el mismo problema en agosto de 2019 sobre el que pregunté aquí: Maven silenciosamente no encuentra las pruebas de JUnit para ejecutar . Estas respuestas me llevaron en la dirección correcta, pero descubrí que puedes resolver el problema de manera aún más concisa. Copié mi solución del proyecto Maven de muestra JUnit5 .
A partir de JUnit 5.5.1 y
maven-surefire-plugin
2.22.2, no es necesario agregar lajunit-platform-surefire-provider
dependencia. Es suficiente tener esta dependencia y un complemento especificados en supom.xml
:fuente
Solo para complementar, surefire 2.22.0 + junit 5.2.0 + plataforma 1.2.0 también funciona. Se adjunta un pom de trabajo para su referencia:
fuente
junit-vintage-engine
una dependencia, y todas mis pruebas se escribieron para JUnit 4.En mi caso, esto se debió al TestNG en el classpath ( SUREFIRE-1527 ). Groovy 2.5.5 POM lo ha traído con el
groovy-testng
módulo.El proveedor de marco de prueba especificado manualmente (como se describe en https://maven.apache.org/surefire/maven-surefire-plugin/examples/providers.html ) resolvió el problema:
fuente
<dependency>
de<dependencies>
en su ejemplo de código.Hay un problema abierto para surefire 2.20
Me funciona con surfire 2.19 + junit-platform- * 1.0.3
fuente
Tuve un problema similar que también hizo que Surefire reconociera cero pruebas.
Mi problema resultó estar relacionado con lo siguiente (de la documentación de JUnit 5.1.0 / maven ):
Estaba intentando usar las últimas versiones de Surefire (2.21.0) y junit-platform-surefire-provider (1.1.0), y no funcionó (ni en Java 8 ni en 9)
Volver a Surefire 2.19.1 resolvió mi problema.
De acuerdo con este problema , se incluirá una solución en la versión 1.2.0 de junit-platform-surefire-provider (actualmente disponible solo como SNAPSHOT).
fuente
Una cosa que noté fue que pude hacer que funcionara:
ClinicCalendarShould
no es recogido por mavenClinicCalendarTest
SI es recogido por mavenEntonces, a menos que me falte algún tipo de configuración o parámetro o lo que sea en el complemento seguro, de forma predeterminada, debe nombrar sus clases de prueba XXXTest.
fuente
La actualización para
maven-surefire-plugin:2.20
ejecutar las pruebas de Junit5 sin problemas.Pero estoy usando la
M6
versión en Junit5.fuente
En mi caso, el complemento seguro no obtuvo la versión correcta en jupiter-engine / api. ¡Y eso fue incluso si ejecuta Maven 3.6.1 y surefireplugin Versión 2.22.2!
Ahora mi configuración de complemento seguro se ve así:
Además, tuve que forzar estas versiones:
Parece que 5.5.2 estaba vinculado a la versión 1.3.2 de la plataforma incorrecta en lugar de 1.5.2 en mi caso.
Todas las pruebas JUnit5 se recuperan ahora. ¡Incluso con 2.22.0 del complemento infalible, este no fue el caso para mí!
Espero que ayude...
fuente
Me enfrentaba al mismo problema
junit5
y lasmaven-surefire
pruebas fallaban. Sin embargo,junit4
estaba funcionando bien. La siguiente combinación funcionó para mí, no agrego el control de versiones. Úselojunit-bom
para la gestión de dependencias. Utilizandospring-boot
2.1.4
Asegúrese de actualizar a la última versión de eclipse
fuente