如何从android项目中的jacoco测试覆盖率报告中排除方法

问题描述 投票:3回答:1

我检查了Jacoco github ans浏览了一些Stack Overflow问题。通过注释不支持最高版本0.7.9的jacoco过滤方法,仅支持整个类。现在0.8.0和0.8.1已经发布。这些版本中是否添加了此功能?我检查了jacoco的变化历史。

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

但是在最新版本中看不到与过滤相关的任何内容。但是仍然想确认某人是否实现了这一目标以及如何实现?

android android-gradle jacoco
1个回答
0
投票

我找到了如何从覆盖率报告中排除静态方法的解决方案。

  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>
© www.soinside.com 2019 - 2024. All rights reserved.