Maven ne fonctionne pas @BeforeEach Méthodes lors de l'exécution

Luca:

J'ai un test de classe permet de l' appeler TestSomething, et un objet de test permet d' appeler celui - ci SomeObject.

Maintenant , je besoin de cet objet dans chaque test Une nouveauté cette signifie que j'ai dans mon code une @BeforeEachqui se charge cet objet dans un champ:

import me.test.SomeObject;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

public class TestSomething {
    private SomeObject someObject;

    @BeforeEach
    public void load() {
        someObject = new SomeObject();
    }

    @Test
    public void test1() {
        boolean result = someObject.checkForSomething();
        Assertions.assertEquals(true, result);
    }

    @Test
    public void test2() {
        boolean result = someObject.checkForSomethingElse();
        Assertions.assertEquals(false, result);
    }

pom.xml du module de test:

<?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">

  <parent>
    <artifactId>test</artifactId>
    <groupId>me.test</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>


  <properties>
    <projectVersion>1.0.0</projectVersion>
    <maven.deploy.skip>false</maven.deploy.skip>
  </properties>


  <artifactId>Tests</artifactId>
  <dependencies>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <version>5.0.3</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>me.test</groupId>
      <artifactId>project</artifactId>
      <version>1.0-SNAPSHOT</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

pas sûr si elle est pertinente, mais l'objet SomeObjectest dans un module distinct, et le module de test a une dépendance sur ce module avec Scope test. (je l' ai essayé aussi providedet compile)

Alors maintenant , si je cours ces tests dans InteliJ ils fonctionnent très bien. mais maintenant , si je tente de construire mon projet les tests échouent, avec NullPointerExceptions parce someObjectest null.

Maintenant , le travail de test i appeler la méthode load()dans chaque test, mais ce n'est pas exactement ce que je veux.

davidxxx:

Par défaut, Maven ne sera pas le test avec le moteur Jupiter

Afin d'avoir Maven Surefire exécuter des tests à tous, une implémentation TestEngine doit être ajouté à la classpath d'exécution.

Et ce n'est pas présent par défaut.
Donc , pour l' activer, vous devez configurer le maven-plugin-surefire qui exécute les tests unitaires comme indiqué dans la documentation Jupiter :

<build>
    <plugins>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.21.0</version>
            <dependencies>
            <dependency>
                <groupId>org.junit.platform</groupId>
                <artifactId>junit-platform-surefire-provider</artifactId>
                <version>1.2.0</version>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
                <version>5.2.0</version>
            </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

Quelle que soit la question n'est pas forcément facile à repérer, car Maven utilise un coureur qui est capable d'exécuter les tests Jupiter mais n'a pas réussi à exécuter les méthodes de crochet ...

Comme un indice: savoir si le coureur JUnit 5 est lancé , vous pouvez exécuter les tests avec le drapeau bavard tels que: mvn test -X.
Si le coureur Jupiter est utilisé, vous devriez trouver des lignes qui ressemblent à :

[DEBUG] Surefire Annuaire du rapport: ... \ target \ Surefire-rapports

[DEBUG] En utilisant le fournisseur configuré org.junit.platform.surefire.provider.JUnitPlatformProvider

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=168391&siteId=1
conseillé
Classement