2016-09-12 7 views
0

Если вы используете JaCoCo в проекте Groovy, вы получаете много неявно созданных классов закрытия в своем отчете о покрытии. Источником, связанным с ними, являются входящие классы. Отчет о покрытии охватывающих классов также содержит покрытие закрытия, поэтому он не добавляет никакой ценности в отчет о покрытии. Хуже того, он фальсифицирует отчет о покрытии, поскольку заявления, которые охватывают закрытие, подсчитываются дважды в общей статистике.Как вы исключаете неявные классы закрытия Groovy из теста JaCoCo resport с Gradle

Итак, как вы исключаете эти закрытия из сгенерированного отчета о покрытии JaCoCo?

ответ

1

Вы можете исключить скрытые классы закрытия из JaCoCo записи со следующим фрагментом, это не мешает заявления должны быть записаны в ограждающей классе

test { 
    jacoco.excludes = ['**/*$*_closure*'] 
} 

С этого сниппета охват не регистрируется больше, но теперь все закрытия показаны с охватом 0% в отчете и, следовательно, также уменьшают общую статистику охвата.

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

jacocoTestReport { 
    doFirst { 
     classDirectories = classDirectories.collect { fileTree(it) { exclude '**/*$*_closure*' } }.sum() 
    } 
} 

Если у вас есть несколько Test и JacocoReport задачи, которые вы хотите изменить этот путь, вы, конечно, можете сделать это в общем как

tasks.withType(Test) { 
    jacoco.excludes = ['**/*$*_closure*'] 
} 

tasks.withType(JacocoReport) { 
    doFirst { 
     classDirectories = classDirectories.collect { fileTree(it) { exclude '**/*$*_closure*' } }.sum() 
    } 
}