Kotest JUnit XML Format Reporter

KotestはJUnit XML形式のテストレポートを生成できる。この形式はCI/CDツールなどの自動化されたテスト実行環境で使用できる。JUnit XMLレポートはテスト実行結果を記録し、それを分析してテスト結果に関する統計や品質指標を生成するために使用される。

JUnitにはレガシーXMLレポートと呼ばれるXMLレポート生成器が含まれている。多くのツールがこの形式と統合されているため、非常に便利である。しかし、このレポートにはネストされたテスト(nesting tests)という概念がない。そのため、Kotestでネストされたテストスタイルと一緒に使用すると、親テストが孤立した形で含まれる。

この問題を解決するために、Kotestには同じ形式の独自実装があり、親テストを含めるか、名前を折りたたむかを構成できる。

プロジェクトで構成するには、プロジェクト構成を使用してJunitXmlReporterを追加する必要がある。

class MyConfig : AbstractProjectConfig() {
  override fun extensions(): List<Extension> = listOf(
    JunitXmlReporter(
      includeContainers = false, // don't write out status for all tests
      useTestPathAsName = true, // use the full test path (ie, includes parent test names)
      outputDir = "../target/junit-xml" // include to set output dir for maven
    )
  )
}

また、レポーターはシステムプロパティを設定してビルド出力フォルダがどこにあるかを知る必要がある。さらにGradleは、自身でJUnit XMLレポートを生成してはならないことを知る必要がある。Gradleのtestブロックでこれを構成する。

tasks.named<Test>("test") {
  useJUnitPlatform()
  reports {
    junitXml.required.set(false)
  }
  systemProperty("gradle.build.dir", project.buildDir)
}

パラメータ

レポーターには3つのパラメータがある。

  • includeContainerstrueの場合、すべての中間テストがレポートに独自のテストとして含まれる。デフォルトはfalseである。
  • useTestPathAsNametrueの場合、完全なテストパスが名前として使用される。つまり、すべての親テスト名が単一文字列として名前に含まれる。
  • outputDirを設定すると、そのフォルダにレポートが生成される。デフォルトはtest-results/testである。

参考