Mi proyecto se supone que es heredado de un padre a medida y al mismo tiempo de uso Spring Boot
. La solución estándar para la que está utilizando <dependencyManagement>
la sección como se describe aquí .
El problema es cuando un Spring Boot
se añade la dependencia en la sección, experto no ve ninguna unidad de pruebas (Test ejecuta = 0). Reproduje que con los artefactos spring-boot-dependencies
y spring-boot-starter
.
Pasos para reproducir:
- crear un proyecto maven con una prueba de la unidad
SampleTest
y la siguiente pom. - ejecutar
mvn test
. - ver que
SampleTest
se ha agotado y fracasado - elimine el bloque en
<dependencyManagement>
que la importaciónSpring Boot
- correr
mvn test
- ver no hay pruebas han ejecutado y que la acumulación es exitosa.
He tenido problemas similares con las versiones anteriores de surefire
que no pudieron encontrar JUnit5
pruebas de una manera similar. Pero los espectáculos pom eficaces que en este caso las versiones de plugins' están configurados correctamente para 3.0.0-M4
y no anulados por SpringBoot.
Podría usted ayudarme a solucionar el problema con la ejecución de pruebas y aplicar correctamente Spring Boot
en este caso?
src/test/java/org/example/SampleTest.java
package org.example;
import org.junit.jupiter.api.*;
class SampleTest{
@Test
void test(){
Assertions.assertEquals(0, 1);
}
}
pom.xml
El siguiente ejemplo no tiene un padre: Yo sólo he copiado plugins y dependencias de esa mantenerlo concisa.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>spring-boot-import</artifactId>
<version>1.0</version>
<dependencyManagement>
<!-- when this block in uncommented no unit tests are found in the project-->
<!--
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
-->
</dependencyManagement>
<properties>
<version.java>11</version.java>
<version.junit.jupiter>5.6.0</version.junit.jupiter>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<compilerVersion>${version.java}</compilerVersion>
<release>${version.java}</release>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M4</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.0.0-M4</version>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${version.junit.jupiter}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Incluyendo las spring-boot-dependencies
dependencias cambia las dependencias transitivas de la junit-jupiter-engine
dependencia.
La salida mvn dependency:tree
mostrará esto.
antes de
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ spring-boot-import ---
[INFO] org.example:spring-boot-import:jar:1.0
[INFO] \- org.junit.jupiter:junit-jupiter-engine:jar:5.6.0:test
[INFO] +- org.apiguardian:apiguardian-api:jar:1.1.0:test
[INFO] +- org.junit.platform:junit-platform-engine:jar:1.6.0:test
[INFO] | +- org.opentest4j:opentest4j:jar:1.2.0:test
[INFO] | \- org.junit.platform:junit-platform-commons:jar:1.6.0:test
[INFO] \- org.junit.jupiter:junit-jupiter-api:jar:5.6.0:test
Después
[INFO] org.example:spring-boot-import:jar:1.0
[INFO] \- org.junit.jupiter:junit-jupiter-engine:jar:5.6.0:test
[INFO] +- org.apiguardian:apiguardian-api:jar:1.1.0:test
[INFO] +- org.junit.platform:junit-platform-engine:jar:1.5.2:test
[INFO] | +- org.opentest4j:opentest4j:jar:1.2.0:test
[INFO] | \- org.junit.platform:junit-platform-commons:jar:1.5.2:test
[INFO] \- org.junit.jupiter:junit-jupiter-api:jar:5.5.2:test
Como se puede ver el junit-platform-engine
y amigos cambiado de 1.6.0 a 1.5.2 y la API de 5.6.0 a 5.5.2 . Como esos frascos son versiones incompatibles sus pruebas no funcionarán más.
Para solucionar que puede hacer 1 de la siguiente
- Añadir todos, transitiva, dependencias adicionales con una versión explícita
- Añadir el
junit-bom
así a ladependencyManagement
sección antes de la primavera de arranque, para obligar a las versiones - Rebaja a JUnit 5.5.2 para alinearse con la Bota gestionados Spring versión