Kotlin Spek - Как создать XML с отчетом о тестах?

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

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

2 ответа

Решение

Я не проверил тщательно мой 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/

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

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

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 для задачи coveralls (по умолчанию только поддержка Java, проблема с плагином Coveralls gradle):

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

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

onlyIf = {
    true
}

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

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

gradlew jacocoRootReport coveralls

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

Джакоко и комбинезон: https://nofluffjuststuff.com/blog/andres_almiray/2014/07/gradle_glam_jacoco__coveralls

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

Другие вопросы по тегам