サーチ…


構文

  • mvnテスト
  • mvn -Dtest = com.example.package.ExampleTestテスト

JUnitとMaven Surefireプラグインを使用してJavaクラスをテストする

Maven Surefireプラグインは、Mavenビルドプロセスのテストフェーズ中、またはtestがMavenゴールとして指定されているときに実行されます。以下のディレクトリ構造と最小pom.xmlファイルはMavenがテストを実行するように設定します。

プロジェクトのルートディレクトリ内のディレクトリ構造:

─ project_root 
  ├─ pom.xml
  ├─ src
  │  ├─ main
  │  │  └─ java
  │  └─ test
  │     └─ java
  └─ target
     └─ ...

pom.xml内容:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>company-app</artifactId>
  <version>0.0.1</version>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

プロジェクトのsrc/test/java/com/example/appディレクトリに次の内容のPlusTenTest.javaというファイルを作成します。

package com.example.app;

import static org.junit.Assert.assertEquals;
import org.junit.Test;

public class PlusTenTest {
    
    @Test
    public void incrementTest() {
        int result = PlusTen.increment(10);
        assertEquals("PlusTen.increment(10) result", 20, result);
    }
}

アノテーション@Testは、JUnitに対して、MavenビルドプロセスのtestフェーズでincrementTest()をテストとして実行する必要があることを伝えます。次に、 src/main/java/com/example/app PlusTen.javaを作成します。

package com.example.app;

public class PlusTen {
    public static int increment(int value) {
        return value;
    }
}

コマンドプロンプトを開き、プロジェクトのルートディレクトリに移動して次のコマンドを実行して、テストを実行します。

mvn -Dtest=com.example.app.PlusTenTest test

Mavenはプログラムをコンパイルし、 PlusTenTestテストメソッドincrementTest()PlusTenTestます。テストは次のエラーで失敗します。

...
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec <<< FAILURE! - in com.example.app.PlusTenTest
incrementTest(com.example.app.PlusTenTest)  Time elapsed: 0.004 sec  <<< FAILURE!
java.lang.AssertionError: PlusTen.increment(10) result expected:<20> but was:<10>
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:743)
at org.junit.Assert.assertEquals(Assert.java:118)
at org.junit.Assert.assertEquals(Assert.java:555)
at com.example.app.PlusTenTest.incrementTest(PlusTenTest.java:12)


Results :

Failed tests:   
  PlusTenTest.incrementTest:12 PlusTen.increment(10) result expected:<20> but was:<10>

Tests run: 1, Failures: 1, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.749 s
[INFO] Finished at: 2016-09-02T20:50:42-05:00
[INFO] Final Memory: 14M/209M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project app: There are test failures.
...

Mavenのシュアプラグインが作成されます/target/surefire-reports/ファイル含むプロジェクトのディレクトリ内のディレクトリcom.example.app.PlusTenTest.txtTEST-com.example.app.PlusTenTest.xml最初のエラーの詳細が含まれています上記の出力の

テスト駆動型の開発パターンに従って、 increments()メソッドが正しく動作するようにPlusTen.java変更しincrements()

package com.example.app;

public class PlusTen {
    public static int increment(int value) {
        return value + 10;
    }
}

コマンドをもう一度起動します。

mvn -Dtest=com.example.app.PlusTenTest test

テストに合格します:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.example.app.PlusTenTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.028 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.753 s
[INFO] Finished at: 2016-09-02T20:55:42-05:00
[INFO] Final Memory: 17M/322M
[INFO] ------------------------------------------------------------------------

おめでとう! JUnitとMaven Surefireプラグインを使用してJavaクラスをテストしました。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow