SpringBoot no se ejecuta pruebas de unidad cuando se añade en DependencyManagement

diziaq:

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 Bootse 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-dependenciesy spring-boot-starter.

Pasos para reproducir:

  1. crear un proyecto maven con una prueba de la unidad SampleTesty la siguiente pom.
  2. ejecutar mvn test.
  3. ver que SampleTestse ha agotado y fracasado
  4. elimine el bloque en <dependencyManagement>que la importaciónSpring Boot
  5. correr mvn test
  6. ver no hay pruebas han ejecutado y que la acumulación es exitosa.

He tenido problemas similares con las versiones anteriores de surefireque no pudieron encontrar JUnit5pruebas 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-M4y no anulados por SpringBoot.

Podría usted ayudarme a solucionar el problema con la ejecución de pruebas y aplicar correctamente Spring Booten 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>
Marcus continuación:

Incluyendo las spring-boot-dependenciesdependencias cambia las dependencias transitivas de la junit-jupiter-enginedependencia.

La salida mvn dependency:treemostrará 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-enginey 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

  1. Añadir todos, transitiva, dependencias adicionales con una versión explícita
  2. Añadir el junit-bomasí a la dependencyManagementsección antes de la primavera de arranque, para obligar a las versiones
  3. Rebaja a JUnit 5.5.2 para alinearse con la Bota gestionados Spring versión

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=276029&siteId=1
Recomendado
Clasificación