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의 테스트 블록에서 이를 구성한다.

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

매개변수

리포터에는 3가지 매개변수가 있다:

  • includeContainerstrue이면 모든 중간 테스트가 보고서에 자체 테스트로 포함된다. 기본값은 false이다.
  • useTestPathAsNametrue이면 전체 테스트 경로가 이름으로 사용된다. 즉, 이름에 모든 상위 테스트의 이름이 단일 문자열로 포함된다.
  • outputDir 설정하면 해당 폴더에 보고서가 생성되며, 기본값은 test-results/test이다.

참고




최종 수정 : 2024-04-21