2015-03-12 3 views
2

Я пытаюсь сбить Gradle Build, когда покрытие кода Jacoco ниже определенного процента.Gradle jacoco терпит неудачу, если покрытие кода ниже порогового значения с помощью элемента проверки 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 в плагин jadoco Gradle, даже если это невозможно?

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

ТИА,

Виджай

ответ

1

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

Перед тем, как подняться до 3.4, вам пришлось прибегать к обходным решениям для рук, таким как this one.

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

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

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

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

test.finalizedBy jacocoTestCoverageVerification, jacocoTestReport 
+1

Обратите внимание, что ничего не случится, если вы на самом деле не запустить 'jacocoTestCoverageVerification' задачу, и это не происходит автоматически. Кроме того, вы не получите отчет, если вы не запустите 'jacocoTestReport'. Возможно, добавьте 'test.finalizedBy jacocoTestCoverageVerification, jacocoTestReport' в конец вашего кода? – Thunderforge

Смежные вопросы