Kotest Allure拡張

Allure拡張について紹介する。

Allureは、詳細なインタラクティブテストレポートのために設計されたオープンソースフレームワークである。レポートファイルを生成し、それを使用して最終HTMLレポートを作成する方式で動作する。従来のJUnitレポートに似ているが、より高度で詳細なものと考えられる。

2つのステップがある。最初のステップはテスト実行時に生データを生成することで、2つ目のステップはそのデータをインタラクティブHTMLレポートへコンパイルすることである。

このモジュールはKotestと一緒にAllureを使用するための統合機能を提供する。開始するには、Gradleビルドファイルに以下の依存関係を追加する。

io.kotest.extensions:kotest-extensions-allure:${kotest.version}

Note: グループIDは基本Kotest依存関係(io.kotest)とは異なるID(io.kotest.extensions)である。

データ収集

Allureにはほとんどのテストフレームワーク向けのデータ収集器があり、このモジュールはKotest向けの統合機能を提供する。モジュールがビルドに追加されたら、プロジェクト構成を使用してグローバルにAllureTestReporterクラスを接続する。

class MyConfig : AbstractProjectConfig {
    override fun listeners() = listOf(AllureTestReporter())
}

これでテストが実行されるたびに、KotestはテストデータをAllure JSON形式で書き出す。

Gradleプラグイン

テストが完了したので、最終レポートへコンパイルできる。

この作業はAllureバイナリを使って手動で行うことも、Allure Gradleプラグインを使用することもできる。Gradleプラグインを使用するには、まずビルドのpluginsブロックにプラグインを追加する。

plugins {
  ...
  id("io.qameta.allure") version "2.8.1"
}

次に、バージョンを設定し自動構成を無効化するため、Allure構成セクションを追加する。AllureはJUnitだけを自動構成でき、Kotestはこの作業を自身で処理するためである。

allure {
  autoconfigure = false
  version = "2.13.1"
}

最後にGradleタスクallureReportを実行すると、./build/reports/allure-reportにレポートが生成され、その中にレポートのindex.htmlエントリポイントを見つけられる。

ビルドディレクトリ設定

Gradleプラグインを使用しない場合、テスト構成でallure.results.directoryシステムプロパティを設定し、ビルドディレクトリがどこにあるかを知らせる必要がある。Gradleプラグインを使用する場合、Gradleプラグインがこの作業を自動で行うため、このステップはスキップできる。

例:

tasks.named<Test>("test") { // or "jvmTest" etc
   useJUnitPlatform()
   systemProperty("allure.results.directory", project.buildDir.toString() + "/allure-results")
}

最終レポート

すべてが正常に完了すると、テスト実行およびレポート生成後に次のような内容が表示される。

Allure


参考