Тесты выполняются дважды при использовании плагина 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) с моим проектом, поэтому я не знаю, сработало ли оно.