Jacoco показывает покрытие 0,0 при запуске задачи gradle, но показывает правильность при запуске из intellij

Я использую плагин Jacoco для расчета покрытия кода для приложения весенней загрузки. Конфигурация Jacoco из build.gradle выглядит так:

jacocoTestReport {
reports {
    xml.enabled false
    csv.enabled false
    html.destination file("${buildDir}/jacocoHtml")
}

afterEvaluate {
    classDirectories = files(classDirectories.files.collect {
        fileTree(dir: it,
                exclude: ['**/models/**',
                          '**/config/**',
                          '**/constants/**',
                          '**/Application.class'])
    })
}

}

а также

jacocoTestCoverageVerification {
violationRules {
    rule {
        element = 'PACKAGE'
        excludes = ['some packages']
        limit {
            counter = 'BRANCH'
            minimum = 0.7
        }
    }
}

}

Когда я запускаю покрытие из IntelliJ, он показывает правильный результат, но когда я запускаю его с gradlew clean buils, он не работает с покрытием 0,0. enter image description here

Я написал пример класса, и вот снимки отчетов jacoco: отчет: enter image description here класс: enter image description here И тест, который я написал для SomeClass, это

public class SomeClassTest {
private SomeClass someClass;

@Before
public void setUp() throws Exception {
    someClass = new SomeClass(12, 23);
}

@Test
public void shouldSumTwoValues() {
    assertThat(someClass.sum()).isEqualTo(35);
}

}

Может кто-нибудь помочь мне с этим?

0
0
1 120
2

Ответы 2

Учитывая src/main/java/SomeClass.java

class SomeClass {

  private Integer value1;
  private Integer value2;

  SomeClass(Integer value1, Integer value2) {
    this.value1 = value1;
    this.value2 = value2;
  }

  Integer sum() {
    return value1 + value2;
  }

}

src/test/java/SomeClassTest.java

import org.junit.*;
import static org.junit.Assert.*;

public class SomeClassTest {
  private SomeClass someClass;

  @Before
  public void setUp() throws Exception {
    someClass = new SomeClass(12, 23);
  }

  @Test
  public void shouldSumTwoValues() {
    assertEquals(35, (int) someClass.sum());
  }
}

и build.gradle

apply plugin: "java"
apply plugin: "jacoco"

dependencies {
  testCompile "junit:junit:4.12"
}

repositories {
  mavenCentral()
}

выполнение gradle test jacocoTestReport дает следующий отчет в build/reports/jacoco/test/html/index.html

report

Дополнение к build.gradle из

jacocoTestReport {
  reports {
    xml.enabled false
    csv.enabled false
    html.destination file("${buildDir}/jacocoHtml")
  }

  afterEvaluate {
    classDirectories = files(classDirectories.files.collect {
        fileTree(dir: it,
                exclude: ['**/models/**',
                          '**/config/**',
                          '**/constants/**',
                          '**/Application.class'])
    })
  }
}

jacocoTestCoverageVerification {
  violationRules {
    rule {
        element = 'PACKAGE'
        excludes = ['some packages']
        limit {
            counter = 'BRANCH'
            minimum = 0.7
        }
    }
  }
}

не меняет результат / отчет, кроме смены директории с отчетом на build/jacocoHtml.

@PoojaGurav использование оболочки (gradle wrapper --gradle-version 4.10 && ./gradlew clean test jacocoTestReport) ничего не меняет.

Godin 11.09.2018 09:25

В моем случае я обнаружил, что это связано с тем, что я установил минимум = 1. Когда я меняю его на 0.9, он внезапно работает.

Другие вопросы по теме