使用cobertura和maven网站插件时,测试运行两次

时间:2014-08-20 22:11:53

标签: maven maven-plugin maven-cobertura-plugin

我正在使用maven网站插件和cobertura一起运行单元测试并生成报告。一切都运行正常,但唯一的问题是所有单元测试都运行了两次。

我尝试为forkMode设置nevermaven-site-plugin,但即便如此,我也面临同样的问题。

任何帮助都将不胜感激。

我的命令:mvn cobertura:cobertura -Dcobertura.report.format=html

我的pom:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <configuration>
                    <aggregate>true</aggregate>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>clean</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <aggregate>false</aggregate>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
            </plugin>
        </plugins>
    </pluginManagement>

    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

<reporting>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <configuration>
                <formats>
                    <format>html</format>
                    <format>xml</format>
                </formats>
                <instrumentation>
                    <excludes>
                        <exclude>**/test/**/*.class</exclude>
                    </excludes>
                </instrumentation>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <version>3.0.1</version>
            <configuration>
                <targetJdk>1.6</targetJdk>
                <linkXref>true</linkXref>
                <sourceEncoding>ISO-8859-1</sourceEncoding>
                <format>xml</format>
                <aggregate>true</aggregate>
                <verbose>true</verbose>
                <rulesets>
                    <ruleset>favorites.xml</ruleset>
                </rulesets>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.9.1</version>
            <configuration>
                <aggregate>true</aggregate>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>findbugs-maven-plugin</artifactId>
            <version>2.5.2</version>
            <configuration>
                <xmlOutput>true</xmlOutput>
            </configuration>
        </plugin>
    </plugins>
</reporting>

3 个答案:

答案 0 :(得分:0)

我认为这是一种正常行为。

您正在使用两个基于相同内容的不同报告:

  • 测试报告要求运行测试,但不启用覆盖。
  • 覆盖率报告要求测试以 覆盖率
  • 运行。

但是两份报告都不知道彼此,为什么它会运行两次。

[更新]阅读此mailing list后,它表示您应该最好在个人资料中禁用测试(使用skipTests)。

至于你的命令行,它会给出:

mvn cobertura:cobertura -DskipTests -Dcobertura.report.format=html

但请注意,我的项目无法让cobertura工作(遇到“”最终“”最终“”在第106行,第12列。),所以我不知道是否工作

答案 1 :(得分:0)

我最终创建了两个配置文件,一个用于cobertura,另一个用于站点,这将构建findbugs,CPD和PMD分析。不确定这是否是正确的方法,但解决了我的问题。

希望这会对某人有所帮助。

答案 2 :(得分:0)

测试将始终使用cobertura-maven-plugin运行两次。

如果您需要cobertura报告并希望测试只运行一次,您可以尝试使用qualinsight-mojo-cobertura-core插件。您可以在项目页面上找到文档:https://github.com/QualInsight/qualinsight-mojo-cobertura