【问题标题】:JaCoCo not ignoring classJaCoCo 不忽视课堂
【发布时间】:2019-01-29 20:17:03
【问题描述】:

我已经成功地将 JaCoCo 添加到我的项目中,它工作正常,但由于某种原因它不允许我排除一个类:src/main/java/com/example/Main.java

       <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.1</version>
            <executions>
                <execution>
                    <id>prepare-agent</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>check</id>
                    <goals>
                        <goal>check</goal>
                    </goals>
                    <configuration>
                        <skip>false</skip>
                        <haltOnFailure>true</haltOnFailure>
                        <rules>
                            <rule>
                                <element>BUNDLE</element>
                                <excludes>
                                    <exclude>com/example/Main.*</exclude>
                                </excludes>
                                <limits>
                                    <limit>
                                        <counter>LINE</counter>
                                        <value>COVEREDRATIO</value>
                                        <minimum>0.80</minimum>
                                    </limit>
                                    <limit>
                                        <counter>BRANCH</counter>
                                        <value>COVEREDRATIO</value>
                                        <minimum>0.60</minimum>
                                    </limit>
                                </limits>
                            </rule>
                        </rules>
                    </configuration>
                </execution>
                <execution>
                    <id>report</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

我已经尝试了网站中的其他问题,但在排除单个班级时,没有一个对我有用。执行上述代码后,我得到以下输出,其中包含 Main 类,这是我想避免的:

提前致谢

【问题讨论】:

    标签: maven unit-testing jacoco cobertura jacoco-maven-plugin


    【解决方案1】:

    在您的问题中,excludes 块在 configuration/rules 内声明。它应该在configuration 中声明。

    例如:

    <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.8.1</version>
        <configuration>
            <excludes>
                <exclude>**/Main.*</exclude>
            </excludes>
        </configuration>
        <executions>
            <execution>
                <id>default-prepare-agent</id>
                <goals>
                    <goal>prepare-agent</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    

    我建议从最简单的插件定义开始(即我在上面发布的内容),一旦起作用,将其扩展为 (1) 按包名称引用类和 (2) 添加规则。

    【讨论】:

    • 非常感谢你的回答哥们,我试过了,但还是不行,你能把整个例子贴出来吗?
    • 准确地说:你没有义务在plugin/configuration中指定excludes,它遵循标准的Maven原则,即在plugin/executions/execution中指定时仅适用于execution中的目标,当在plugin/configuration 中指定时适用于所有执行,因此特别是可以在包含report 目标的执行中指定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    相关资源
    最近更新 更多