Kotest JUnit XML Format Reporter
Kotest는 JUnit XML 형식의 테스트 보고서를 생성할 수 있다. 이 형식은 CI/CD 도구와 같은 자동화된 테스트 실행 환경에서 사용될 수 있다. JUnit XML 보고서는 테스트 수행 결과를 기록하고 이를 분석하여 테스트 결과에 대한 통계 및 품질 지표를 생성하는 데 사용된다.
JUnit에는 레거시 xml 보고서라고 부르는 XML 보고서 생성기가 포함되어 있다. 많은 도구들이 이 형식과 통합되므로 매우 유용하다. 그러나 이 보고서에는 중첩 테스트(nesting tests)라는 개념이 없다. 따라서 Kotest에서 중첩 테스트 스타일과 함께 사용하면 부모 테스트가 고아로 포함된다.
이 문제를 해결하기 위해 Kotest에는 동일한 형식의 자체 구현이 있으며, 상위 테스트를 포함할지 또는 이름을 축소할지 여부를 구성할 수 있다.
NOTE
빌드에 `io.kotest:kotest-extensions-junitxml` 모듈이 필요하다. 최신 버전은 여기에서 [maven central](https://central.sonatype.com/artifact/io.kotest/kotest-extensions-junitxml)을 검색하다.
프로젝트에서 구성하려면 프로젝트 구성을 사용하여 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가지 매개변수가 있다:
includeContainers가true이면 모든 중간 테스트가 보고서에 자체 테스트로 포함된다. 기본값은false이다.useTestPathAsName가true이면 전체 테스트 경로가 이름으로 사용된다. 즉, 이름에 모든 상위 테스트의 이름이 단일 문자열로 포함된다.outputDir설정하면 해당 폴더에 보고서가 생성되며, 기본값은test-results/test이다.