実行中Mavenは@BeforeEachメソッドを実行しません。

ルカ:

私は、クラスはそれを呼び出すことができますテストを持っているTestSomething、とテストオブジェクトはこの1つを呼び出すことができますSomeObject

今、私は私のコードを持っていることは、この手段を新たにすべての単一のテストでこのオブジェクトを必要とする@BeforeEach負荷そのフィールドに、このオブジェクト:

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:

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

ないでください、それが関連しているが、オブジェクトがあればSomeObject、別のモジュールであり、かつテストモジュールは、適用範囲とそのモジュールに依存していますtest(私も試みprovidedcompile

だから今私はInteliJでこのテストを実行する場合、彼らはうまく動作します。しかし、今私はのでNullPointerExceptionsがで、私のプロジェクトにテストの失敗を構築しようとした場合someObjectですnull

今私のテスト作業はメソッドを呼び出すload()すべてのテストでは、それは私が欲しい正確に何ではありません。

davidxxx:

デフォルトでは、Mavenは木星エンジンなどでテストを実行しません

Mavenのシュアは、すべての任意のテストを実行させるためには、TestEngine実装は、実行時クラスパスに追加する必要があります。

そして、これはデフォルトでは存在しません。
だから、それはあなたがに記載されているようにユニットテストを実行するのmaven-確実な-プラグインを設定する必要が有効にするには木星のマニュアルを

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

Mavenのは、木星のテストを実行することが可能であるが、フックメソッドを実行するために管理していませんでしたランナーを使用しているため、どのような問題は、必ずしも容易では見つけることができません...

ヒントとして:JUnitの5ランナーが起動されているかどうかを、次のような冗長フラグでテストを実行することができます知りたいですmvn test -X
木星のランナーが使用されている場合、あなたは次のような行を見つける必要があります。

[DEBUG]シュアレポートディレクトリ:... \ターゲット\確実な-レポート

構成されたプロバイダを使用して[デバッグ] org.junit.platform.surefire.provider.JUnitPlatformProvider

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=168390&siteId=1