Kotlin Spek – Как создать XML-отчет об испытаниях?

Я использую Spek для тестирования моего приложения Kotlin. Я хотел бы опубликовать свой отчет о тестах после сборки Jenkins. JUnit или TestNG будут генерировать отчет XML, который Дженкинс может использовать для генерации статистики тестов.

Создает ли Spek такой отчет? Если да, то как настроить проект Gradle для его получения? Если нет, каковы другие параметры отчетности?

В настоящее время я использую JaCoCo с Coveralls для интеграции моего (многомодульного) проекта после сборки CI, поэтому у меня могут быть небольшие ошибки для мономодуля (я его адаптировал), но это часть моих исследований.

Первое, что вам нужно сделать, это настроить ваш build.gradle, чтобы ваши тесты работали, применяя плагин Jacoco к вашей градации:

apply plugin: "jacoco" 

И тогда вы должны включить вывод:

 jacocoTestReport { group = "Report" reports { xml.enabled = true csv.enabled = false html.destination "${buildDir}/reports/coverage" } } 

Чтобы генерировать отчеты, вы можете использовать: gradle test jacocoTestReport (не стесняйтесь добавлять только jacocoTestReport к вашей уже действующей команде для сборки)

После создания отчетов теперь вы должны отправить их в комбинезоны, это делается на шаг после завершения компиляции / тестирования.

Чтобы отправить его в комбинезоны, вам нужно добавить плагин gradle для комбинезонов:

 plugins { id 'com.github.kt3k.coveralls' version '2.7.1' } 

Создайте задачу rootReport

 task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) { dependsOn = subprojects.test sourceDirectories = files(subprojects.sourceSets.main.allSource.srcDirs) classDirectories = files(subprojects.sourceSets.main.output) executionData = files(subprojects.jacocoTestReport.executionData) reports { html.enabled = true xml.enabled = true csv.enabled = false } } 

и добавить источники kotlin для задачи комбинезонов (только поддержка java по умолчанию, проблема с плагином плагинов ):

 coveralls { sourceDirs += ['src/main/kotlin'] } 

Я наткнулся на ошибку, когда делал это, которая нуждалась в этих трех строках при создании jacocoRootReport, но это в основном для проекта с несколькими модулями ( обходной путь ):

 onlyIf = { true } 

Последним шагом является настройка вашего инструмента CI, чтобы узнать, где найти токен / свойства плагинов ( источник ). Я лично сделал это, добавив переменные среды, а не coveralls.yml (это не сработало).

И теперь вы можете добавить два шага к своей после сборки:

 gradlew jacocoRootReport coveralls 

И вы должны увидеть свои отчеты на своей странице комбинезонов!

Jacoco и комбинезоны: https://nofluffjuststuff.com/blog/andres_almiray/2014/07/gradle_glam_jacoco__coveralls

Рабочий пример: https://github.com/jdiazcano/cfg4k/blob/master/build.gradle#L24

Я не полностью проверил каталог build . Поскольку Spek использует JUnit 5 Platform Engine, он будет создавать отчеты так же, как и JUnit 5.

Действительно, после запуска ./gradlew clean build вы можете увидеть файл здесь: ./build/reports/junit/TEST-spek.xml . Я использовал Jenkins для публикации отчета JUnit XML после сборки, и он отлично работает.

Если вы хотите изменить каталог отчетов, вы должны настроить его в сценарии сборки Gradle следующим образом.

 junitPlatform { reportsDir file("$buildDir/your/path") filters { engines { include 'spek' } } } 

Источник, JUnit 5 Руководство пользователя: http://junit.org/junit5/docs/current/user-guide/#running-tests-build