JGiven のレポート機能を試す(Java, JUnit)
JGiven ではいくつかのレポート機能が用意されているようです。
テキストのレポートを無効にする
デフォルトでは、コンソール上にテキストのレポートが表示されます。
Something should happen Given サーバーが止まっている時に When プログラムを実行すると Then エラーになる
しかしながら、これを Java system property にて無効化することが出来ます。
$ mvn test -Djgiven.report.text=false
わざわざ無効化する用途は思い当たらないのですが。
JSON のレポートを無効にする
デフォルトでは、jgiven-reports ディレクトリ以下に JSON ファイルでテスト結果のレポートが出力されます。
私の環境では、eclipse 上からテストを実行した場合、project/jgiven-reports にレポートが出力されました。
mvn test でテストを実行した場合、target/jgiven-reports/json にレポートが出力されました。
後者については、Maven surefire plugin を用いた場合の挙動になるようですが、あまり理解できていません。
しかしながら、これも無効にすることが出来ます。
$ mvn test -Djgiven.report.enabled=false
この property を指定した場合、コンソール上へのテキスト形式のレポートも表示されなくなります。
※レポート機能自体が無効化される
これも、わざわざ無効化する用途は思い当たらないのですが。
HTML のレポートを出力するために
このような感じのレポートが出力できるようです。
まず、JSON のレポート出力は必須とのこと。
そして、Given report generator と呼ばれるツールを html フォーマットを指定して実行すれば出力してくれるようです。
このツールは、jgiven-html5-report と呼ばれるモジュールの一部らしいです。
java com.tngtech.jgiven.report.ReportGenerator \ --format=html \ [--sourceDir=<jsonreports>] \ [--targetDir=<targetDir>] \
maven プラグインを使えば、このようなコマンドを別途実行してあげる必要もなさそうです。
pom ファイルで指定するためには、
<build>
<plugins>
<plugin>
<groupId>com.tngtech.jgiven</groupId>
<artifactId>jgiven-maven-plugin</artifactId>
<version>0.17.0</version>
<executions>
<execution>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
<configuration>
<format>html</format>
</configuration>
</plugin>
</plugins>
</build>
注意点は、reporting の配下ではなくて、build の配下に設置すること。
そして、mvn verify コマンドを実行しますと、以下のようにレポートが target/jgiven-reports/html 配下に自動的に生成されます。
[INFO] --- jgiven-maven-plugin:0.17.0:report (default) @ practiceJava --- [INFO] JGiven HTML report source directory: /home/xx/workspace/Java/target/jgiven-reports/json [INFO] JGiven HTML report output directory: /home/xx/workspace/Java/target/jgiven-reports/html [INFO] Generating HTML reports to /home/xx/workspace/Java/target/jgiven-reports/html... [INFO] Generating HTML5 report to /home/xx/workspace/Java/target/jgiven-reports/html/index.html [INFO] Written 1 scenarios to data0.js [INFO] Cannot read /home/xx/workspace/Java/src/test/resources/jgiven/custom.css, skipping [INFO] Cannot read /home/xx/workspace/Java/src/test/resources/jgiven/custom.js, skipping [INFO] ------------------------------------------------------------------- [INFO] Generated JGiven HTML reports to directory /home/xx/workspace/Java/target/jgiven-reports/html [INFO] -------------------------------------------------------------------
ブラウザで開いてみると、こんな感じに見れます。
まとめ
レポート機能は HTML (ブラウザで確認)のためにあるような印象です。
今までテスト結果をコンソール上や、IDE上でのみか確認出来なかった場合、外部向けに説明するには何らかの加工をしてあげる必要がありましたが、ブラウザ上でのレポートであれば見やすく、外部向けにも説明がしやすくなると思います。
ついでに、テストを書くのが楽しくなれば良いと思います。