Тесты выполняются дважды при использовании плагина cobertura и сайта maven

Я использую плагин сайта maven и cobertura для запуска модульных тестов и создания отчетов. Все работает нормально, но единственная проблема - все модульные тесты выполняются дважды.

Я пытался установить forkMode как never за maven-site-plugin но даже тогда я сталкиваюсь с той же проблемой.

Любая помощь будет оценена.

Моя команда: mvn cobertura:cobertura -Dcobertura.report.format=html

Мой пом

<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 ответа

В итоге я создал 2 профиля, один для cobertura, а другой для сайта, который будет создавать findbugs, анализ CPD и PMD. Не уверен, что это правильный путь, но решает мою проблему.

Надеюсь, это будет полезно для кого-то.

Тесты всегда будут выполняться дважды с cobertura-maven-plugin,

Если вам нужны отчеты cobertura и вы хотите, чтобы тесты запускались только один раз, вы можете попробовать qualinsight-mojo-cobertura-core плагин. Вы найдете документацию на странице проекта: https://github.com/QualInsight/qualinsight-mojo-cobertura.

Я считаю, что это нормальное поведение.

Вы используете два разных отчета, основанные на одном и том же:

  • отчет о тестировании требует выполнения теста, но не включает покрытие.
  • отчет о покрытии требует проведения теста с покрытием.

Но оба отчета не знают друг друга, поэтому он запускается дважды.

[ОБНОВЛЕНИЕ] после прочтения этого списка рассылки говорится, что вы должны отключить тест (используя skipTests) предпочтительно в профиле.

Что касается вашей командной строки, это даст:

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

Заметьте, однако, что я не смог заставить cobertura работать (получил "Final", "final" "в строке 106, столбец 12) с моим проектом, поэтому я не знаю, сработало ли оно.

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