Исключить юнит-тесты из анализа покрытия кода с JaCoCo - PullRequest
1 голос
/ 28 февраля 2020

Я использую JaCoCo с Gradle. Есть ли способ исключить некоторые модульные тесты из анализа покрытия кода тестируемого кода? (Обратите внимание, что я не имею в виду скрывать юнит-тесты или некоторые классы из отчета о покрытии, который обсуждался, например, в Фильтрах отчетов покрытия JaCoCo с Gradle ).

У меня есть какой-то тест, который предназначен для проверки непротиворечивости необходимого условия, другими словами, тест является слабым ; ожидается, что тест, скорее всего, пройдет каким-либо образом. В случае неудачи проверенный код определенно имеет определенный тип ошибки, но даже если он проходит, он не может гарантировать, что код является полностью правильным (это должно быть проверено другим более сильным тестом, который принимается в счет покрытия кода). Конечно, я хотел бы запустить этот модульный тест в gradle test, но не хотел бы включать его для анализа покрытия кода тестируемого кода.

1 Ответ

0 голосов
/ 03 марта 2020

Вы можете использовать разные задачи Gradle для разных типов тестов. Например,

src/main/java/Example.java

class Example {
    void weak() {
        System.out.println("weak");
    }

    void strong() {
        System.out.println("strong");
    }
}

src/test/java/StrongTest.java

import org.junit.Test;

public class StrongTest {
    @Test
    public final void test() {
        new Example().strong();
    }
}

src/test/java/WeakTest.java

import org.junit.Test;

public class WeakTest {
    @Test
    public void test() {
        new Example().weak();
    }
}

и, наконец, build.gradle

apply plugin: 'java'
apply plugin: 'jacoco'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'junit:junit:4.13'
}

test {
    exclude 'WeakTest.class'
}

task weakTest(type: Test) {
    include 'WeakTest.class'
}

check.dependsOn weakTest

По умолчанию test задача выполнит все, кроме WeakTest и будет использовать JaCoCo для сбора информации о выполнении в build/jacoco/test.exec.

Пользовательская weakTest задача будет выполняться только WeakTest и будет использовать JaCoCo для сбора информации о выполнении в build/jacoco/weakTest.exec.

По умолчанию jacocoTestReport будет использовать информацию из build/jacoco/test.exec для генерации HTML отчета.

Так что выполнение

gradle clean build jacocoTestReport

с использованием Gradle 6.2.1 создаст следующий отчет в каталоге build/reports/jacoco/test/html/, который не содержит информацию о выполнении WeakTest

report

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...