Ошибка Gradle jacoco, если покрытие кода ниже порогового значения с использованием элемента проверки jacoco

Я пытаюсь завершить сборку Gradle, когда покрытие кода Jacoco ниже определенного процента.

<jacoco:report>

    ...

    <check failonviolation="true">
        <rule element="PACKAGE">
            <limit counter="LINE" value="COVEREDRATIO" minimum="0.80"/>
            <limit counter="CLASS" value="MISSEDCOUNT" maximum="0"/>
        </rule>
    </check>

    ...

</jacoco:report>

Как я могу добавить эту задачу Ant в плагин Gradle jacoco, даже если это невозможно напрямую?

Я видел эту ссылку - http://forums.gradle.org/gradle/topics/how-to-fail-the-build-on-insufficient-code-coverage

ТИА,

Виджей


person Vijay    schedule 12.03.2015    source источник


Ответы (1)


Это недавно улучшилось, так как в Gradle 3.4 была добавлена ​​проверка покрытия Jacoco (issue #824 )!

До Gradle 3.4 вам приходилось прибегать к ручным обходным путям, таким как один.

Используя Gradle 3.4 или более позднюю версию, вы можете использовать стандартный подключаемый модуль Jacoco (пример для Gradle 4.0):

jacocoTestCoverageVerification {
    violationRules {
        rule {
            limit {
                minimum = 0.5
            }
        }
    }
}

В приведенном выше примере мы проверяем минимальное покрытие строки 50%. Возможны более сложные правила нарушения, а также можно комбинировать несколько правил нарушения. Пожалуйста, обратитесь к связанной документации.

Для запуска настроенной таким образом проверки получаем задачу jacocoTestCoverageVerification. Отчет о покрытии можно создать с помощью jacocoTestReport. Эти задачи можно запускать автоматически, добавив что-то вроде этого (спасибо @Thunderforge):

test.finalizedBy jacocoTestCoverageVerification, jacocoTestReport
person barfuin    schedule 27.12.2016
comment
Обратите внимание, что ничего не произойдет, пока вы не запустите задачу jacocoTestCoverageVerification, и это не произойдет автоматически. Кроме того, вы не получите отчет, пока не запустите jacocoTestReport. Возможно, добавить test.finalizedBy jacocoTestCoverageVerification, jacocoTestReport в конец вашего кода? - person Thunderforge; 15.07.2017