Как исключить метод из отчета о тестировании Jacoco в проекте Android - PullRequest
0 голосов
/ 21 мая 2018

Я проверил Jacoco github и просмотрел несколько вопросов о переполнении стека.Оказывается, до версии 0.7.9 методы фильтрации jacoco по аннотациям не поддерживаются, поддерживается только весь класс.Сейчас выпущены 0.8.0 и 0.8.1.Добавлена ​​ли эта функция в этих версиях?Я проверил историю изменений jacoco.

https://github.com/jacoco/jacoco/releases

Но не вижу ничего связанного с фильтрацией в последних версиях.Но все же хотите подтвердить, если кто-то достиг этого и как?

1 Ответ

0 голосов
/ 14 апреля 2019

Я нашел решение, как исключить статические методы из отчета покрытия.

  1. Обернуть его статическим классом
  2. Исключить статический класс в конфигурации

Пример кода Java:

private static class Document {
    private static org.w3c.dom.Document createDocument() {
        try {
            final javax.xml.parsers.DocumentBuilderFactory factory =
                    javax.xml.parsers.DocumentBuilderFactory.newInstance();
            factory.setNamespaceAware(true);
            factory.setFeature(javax.xml.XMLConstants.FEATURE_SECURE_PROCESSING, true);
            final javax.xml.parsers.DocumentBuilder builder = factory.newDocumentBuilder();
            return builder.newDocument();
        } catch (javax.xml.parsers.ParserConfigurationException ex) {
            return null;
        }
    }
}

Пример конфигурации исключения:

<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <version>0.8.2</version>
  <executions>
    <execution>
      <id>prepare-agent</id>
      <goals>
        <goal>prepare-agent</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <excludes>
      <exclude>**/Xml$Document.class</exclude>
    </excludes>
  </configuration>
</plugin>
...