Я использую плагин Cobertura Gradle для My Java Project для создания отчета о покрытии кода.Cobertura предоставлял непротиворечивые отчеты на моей машине с Windows, но когда я запускаю ту же сборку на сервере Jenkins и публикую отчет на SonarQube с помощью сонарного сканера, я вижу противоречивый отчет о покрытии.Каждая сборка давала разные проценты покрытия.Кобертура Версия: 2.1.1Версия плагина Cobertura Gradle: 'net.saliman: плагин gradle-cobertura: 2.3.2'Версия Java: 1.7Версия Gradle: 3.5
Я попытался отладить сборку gradle в информационном режиме и обнаружил исключение classNotFoundException при внедрении в журналы, поэтому я попытался добавить все зависимости вручную, используя параметр auxillaryClasspath для подключаемого модуля grabert cobertura, но безуспешно.
Файл Cobertura.gradle
buildscript {
repositories {
maven { url 'http://central.maven.org/maven2/' }
mavenLocal()
dependencies.classpath 'org.apache.commons:commons-lang3:3.2',
'oro:oro:2.0.8',
'org.ow2.asm:asm:5.0.1',
'org.ow2.asm:asm-analysis:5.0.1',
'org.ow2.asm:asm-commons:5.0.1',
'org.ow2.asm:asm-tree:5.0.1',
'org.ow2.asm:asm-util:5.0.1',
'net.saliman:gradle-cobertura-plugin:2.3.2'
}
}
apply plugin: net.saliman.gradle.plugin.cobertura.CoberturaPlugin
def jobpath = new File(buildDir.toString() + "/reports/cobertura")
cobertura {
coverageFormats = ['html', 'xml']
coverageReportDir = jobpath
}
test.finalizedBy(project.tasks.cobertura)
Основной build.gradle часть файла вставлена сюда
apply plugin: 'java'
apply from: 'cobertura.gradle'
...
...
test {
forkEvery = 2
maxParallelForks = 4
maxHeapSize = "2048m"
afterTest { TestDescriptor td, TestResult tr ->
println "${tr} ${td}"
}
}
....
...
dependencies{
...
..
}
Процент покрытия на машине с Windows составил 85% и соответствует, поэтому то же самое необходимо отразить и в отчете Jenkins Server..