Как создать отчет в формате HTML для тестов JUnit 5?
Есть ли уже возможность генерировать HTML-отчет, когда тесты JUnit запускались через Gradle? Любой намек или комментарий приветствуется.
4 ответа
ОБНОВИТЬ
Gradle 4.6 предоставляет встроенную поддержку для платформы JUnit, которая позволяет запускать тесты JUnit Jupiter с использованием стандартного Gradle test
задача, которая генерирует отчеты HTML из коробки.
Ответ для версий Gradle до 4.6
Плагин Gradle платформы JUnit генерирует отчеты о тестировании XML в стиле JUnit 4.
Эти XML-файлы выводятся на build/test-results/junit-platform
по умолчанию.
Итак, если ваш сервер сборки знает, как анализировать XML-отчеты в стиле JUnit 4, вы можете просто указать ему XML-файлы в этом каталоге и позволить серверу сборки сгенерировать HTML-отчет для вас.
Однако, если вы спрашиваете, может ли Gradle сгенерировать отчет HTML для ваших тестов, запущенных через junitPlatformTest
задание, то ответ "Нет, к сожалению, нет". Причина в том, что стандартный Gradle test
Задача генерирует только отчеты HTML на основе собственного проприетарного "двоичного" формата отчета. Так как junitPlatformTest
Задача не генерирует отчеты в двоичном формате Gradle, сам Gradle не может генерировать отчеты HTML для тестов JUnit Platform.
Сказав это, однако, на самом деле есть обходной путь: вы можете использовать Ant в своей сборке Gradle. У Ant есть задача агрегировать XML-отчеты на основе JUnit 4 и генерировать HTML-отчет из этих агрегированных отчетов. Вывод не очень современный, но, по крайней мере, читабельный. Недостатком является то, что таблица стилей XSLT по умолчанию не отображает имена классов тестов для тестов, выполняемых через платформу JUnit.
В любом случае вы можете настроить задачу Ant JUnitReport в Gradle следующим образом.
junitPlatform {
// configure as normal
}
configurations {
junitXmlToHtml
}
task generateHtmlTestReports << {
def reportsDir = new File(buildDir, 'test-reports')
reportsDir.mkdirs()
ant.taskdef(
name: 'junitReport',
classname: 'org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator',
classpath: configurations.junitXmlToHtml.asPath
)
ant.junitReport(todir: "$buildDir/test-results/junit-platform", tofile: "aggregated-test-results.xml") {
fileset(dir: "$buildDir/test-results/junit-platform")
report(format: 'frames', todir: reportsDir)
}
}
afterEvaluate {
def junitPlatformTestTask = tasks.getByName('junitPlatformTest')
generateHtmlTestReports.dependsOn(junitPlatformTestTask)
check.dependsOn(generateHtmlTestReports)
}
dependencies {
// configure as normal ...
junitXmlToHtml 'org.apache.ant:ant-junit:1.9.7'
}
Затем, выполняя gradle check
сгенерирует отчет в формате HTML в build/test-reports/index.html
,
С Уважением,
Сэм (основной коммитер JUnit 5)
Добавление строки ниже в мою команду Java создан TEST-junit-jupiter.xml
в моем target/test-result
папка. Этот XML-файл содержит всю информацию о количестве выполненных тестов, количестве пройденных / неудачных тестов и т. Д.
--reports-dir target/test-result
Отчет о тестировании будет доступен по умолчанию вbuild/reports/tests/<Task Name>/index.html
.
Вы можете изменить это в файле build.gradle[.kts] следующим образом:
reporting.baseDir = file("my-reports")
См. https://docs.gradle.org/current/userguide/java_testing.html#test_reporting .
Да, вы можете использовать плагин Jacoco.
Вот пример:
apply plugin: 'war' or apply plugin: 'java'
apply plugin: "jacoco"
test {
reports.junitXml.destination="build/test-results"
jacoco {
destinationFile = file("build/jacoco/jacoco.exec")
append=true
}
}
jacocoTestReport {
reports {
xml.enabled false
csv.enabled false
html.destination "${buildDir}/jacocoHtml"
}
}
С уважением.