У меня есть файл build.gradle, который может успешно запускать тесты на единицу и интеграцию отдельно или вместе (с помощью команды типа интеграция тестов gradle testTest для совместного использования). Оба используют Junit, я использую Gradle 3, и это не проект Android. Отчет об успехе создается для каждого, в отдельных каталогах. Я также могу успешно сгенерировать отчет Jacoco для unit тестовое покрытие с gradle test jacoco. Я не могу получить отчет о покрытии для моих других рабочих интеграционных тестов, используя gradle integrationTest jacoco, хотя тест успешно выполняется и создается файл integrationTest.exec.build.gradle с плагином Jacoco не генерирует отчет о покрытии для тестов интеграции.
Чтобы быть более явным, я получаю отчет об охвате тестирования объекта в сборке/reports/index.html, а отчеты Junit в сборке/отчетах/test/index.html и build/reports/integrationTest/index.html. Создается каталог build/reports/jacoco, но содержит только пустой «тестовый» каталог. build/также содержит каталог jacoco /, содержащий файлы .exec и classpathdumps.
Вот мое сокращенное build.gradle
apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'jacoco'
repositories {
mavenCentral()
}
sourceSets {
main {
java {
srcDirs = ['src/java']
}
test {
java {
srcDirs = ['test/java']
}
}
resources {
srcDirs = ['src/java', 'conf', 'resource']
}
}
integrationTest {
java {
compileClasspath += main.output + test.output
runtimeClasspath += main.output + test.output
srcDir file('integration_test/java')
}
}
}
test {
jacoco {
append = false
destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
classDumpFile = file("$buildDir/jacoco/classpathdumps")
}
}
configurations {
integrationTestCompile.extendsFrom testCompile
integrationTestRuntime.extendsFrom testRuntime
}
/* SNIP */
task integrationTest(type: Test) {
dependsOn startserver
testClassesDir = sourceSets.integrationTest.output.classesDir
classpath = sourceSets.integrationTest.runtimeClasspath
}
integrationTest.finalizedBy stopserver
check.dependsOn integrationTest
integrationTest.mustRunAfter test
tasks.withType(Test) {
reports.html.destination = file("${reporting.baseDir}/${name}")
}
jacoco {
toolVersion = "0.7.6.201602180812"
}
jacocoTestReport {
reports {
xml.enabled false
csv.enabled false
html.destination "$buildDir/reports"
}
}
Я видел существующие вопросы объединения двух отчетов, генерации отчетов тестирования интеграции Junit я уже есть, и подобные, но в конечном счете, бесполезные вопросы о Maven и Ant. Самое близкое, что я нашел, было this, но ничего, что я пробовал адаптироваться от него, было плодотворным. Кажется, что есть similar question, но с меньшим количеством их build.gradle, и единственный ответ - это недопустимый ответ автора на вопрос в предыдущей ссылке.
Поскольку это уже довольно длинный, я не хотел излишне предоставлять даже больше, чем здесь, но я счастлив предоставить больше, если что-то неясно.
Я проверил, что ничего не глупо, как результаты тестирования модулей, переписывающие интеграционные тесты: тесты интеграции и jacoco без регулярных тестов даже не создают аналогичные файлы.
Есть ли что-нибудь, что я могу сделать, чтобы получить покрытие интеграции?
[Первая править] Я создал небольшой GitHub репо, который имеет все необходимое, чтобы воспроизвести эту проблему: https://github.com/micseydel-tile/gradle-jacoco-integration-test