Выполнение интеграционных тестов с плагином Cobertura Maven - PullRequest
29 голосов
/ 03 февраля 2010

У меня проблемы с получением плагина Cobertura для запуска интеграционных тестов в Maven. Ближайший ответ на этот вопрос, который я нашел, - http://jira.codehaus.org/browse/MCOBERTURA-86. Однако проблема остается открытой ошибкой. Я попробовал конфигурацию, предложенную Stevo 03/09/09, она не работала.

Мое ПОМ

<reporting>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <version>2.3-SNAPSHOT</version>
            <reportSets>
            <reportSet>
                <reports>
                    <report>cobertura-integration</report>
                </reports>
            </reportSet>
            </reportSets>               
        </plugin>   
    </plugins>
</reporting>

, который, кстати, точно такой же, как фрагмент конфигурации, предоставленный Stevo.

Ответы [ 6 ]

7 голосов
/ 19 декабря 2013

По моему мнению, плагин cobertura maven имеет два больших недостатка. У него нет отчета, только цель , все модульные тесты будут снова выполняться безошибочно. Он создает покрытие кода только для модульных тестов .

Сейчас я использую плагин JaCoCo maven. JaCoCo повторно использует достоверные и / или отказоустойчивые отчеты для создания покрытия кода из модульного и / или интеграционного теста Кроме того, JaCoCo имеет хорошую интеграцию Дженкинса . Вот пример, где JaCoCo использует верные модульные тесты и отказоустойчивые интеграционные тесты.

    <build>
    <plugins>
        <!-- Unit tests -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.16</version>
        </plugin>

        <!-- Integration tests -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.16</version>
            <executions>
                <execution>
                    <phase>integration-test</phase>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        <!--
            The JaCoCo plugin generates a report about the test coverage. In contrast to the cobertura plugin
            JaCoCo can be configured to generate code coverage for integration tests. Another advantage of JaCoCo
            is that it reports only, cobertura executes all unit tests again (beside the surefire plugin).
        -->
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.6.4.201312101107</version>
            <executions>
                <execution>
                    <id>jacoco-prepare-agent</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>jacoco-prepare-agent-integration</id>
                    <goals>
                        <goal>prepare-agent-integration</goal>
                    </goals>
                </execution>
                <execution>
                    <id>jacoco-report</id>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
                <execution>
                    <id>jacoco-integration</id>
                    <goals>
                        <goal>report-integration</goal>
                    </goals>
                </execution>
                <execution>
                    <id>jacoco-check</id>
                    <goals>
                        <goal>check</goal>
                    </goals>
                    <configuration>
                        <rules />
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
3 голосов
/ 15 августа 2011

Попробуйте настроить фазу выполнения для этого плагина, например

 <build>
   <plugins>
     <plugin>
       <groupId>org.codehaus.mojo</groupId>
         <artifactId>cobertura-maven-plugin</artifactId>
         <version>2.5.1</version>
         <configuration>
           <formats>
             <format>xml</format>
           </formats>
         </configuration>
         <executions>
           <execution>
             <id>cobertura-check</id>
             <phase>verify</phase>
             <goals>
               <goal>cobertura</goal>
             </goals>
           </execution>
         </executions>
       </plugin>

Таким образом, это работает как очарование для меня.

2 голосов
/ 28 декабря 2016

Для всех, кто споткнулся в этом вопросе через Google - cobertura-maven-plugin начал поддерживать интеграционные тесты в версии 2.7 , опубликованной в 2015 году.

Цитирование их сайта:

До версии 2.6 был доступен только один отчет: cobertura, который предоставил вам отчет о покрытии для ваших модульных тестов.Поскольку он был только один, вам не нужно было его настраивать каким-либо образом.

Начиная с версии 2.7 был добавлен новый отчет: cobertura-интеграционный тест, который дает вам отчет о покрытии для ваших интеграционных тестов.,[..]

Оба отчета включены по умолчанию.Если вам нужно старое поведение только с отчетом о покрытии для ваших модульных тестов, вам нужно настроить плагин ...

Если вы, как и я, запускаете отчет cobertura, используя mvn cobertura:cobertura, выВам также нужно будет выполнить mvn cobertura:cobertura-integration-test, чтобы получить интеграционные тесты.Вы можете проверить детали на странице справки .

2 голосов
/ 01 октября 2012

После того, как в результате некоторых исследований был обнаружен рабочий конфиг, указанный в http://jira.codehaus.org/browse/MCOBERTURA-86, обязательно вызовите его с

 mvn clean deploy -PbuildWithIntegrationTestCoverage

        <profile>
        <!-- Build with IntegrationTestcoverage => instrument classes with cobertura before integrationtests starts. -->
        <id>buildWithIntegrationTestCoverage</id>
        <activation>
            <property>
                <name>buildWithIntegrationTestCoverage</name>
                <value>true</value>
            </property>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>cobertura-maven-plugin</artifactId>
                    <version>2.5.2</version>
                    <executions>
                        <execution>
                            <id>instrument-classes</id>
                            <phase>package</phase>
                            <goals>
                                <goal>instrument</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <!-- Add cobertura as dependency to the jetty-plugin (required for instrumented classes) -->
                <plugin>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>maven-jetty-plugin</artifactId>
                    <dependencies>
                        <dependency>
                            <groupId>org.codehaus.mojo</groupId>
                            <artifactId>cobertura-maven-plugin</artifactId>
                            <version>2.5.2</version>
                            <type>jar</type>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </build>
    </profile>
0 голосов
/ 09 апреля 2014

Я обнаружил, что использование maven-antrun-plugin для многомодульных проектов, включая интеграцию и тестирование пользовательского интерфейса, является лучшим решением. Я использовал этот пост , чтобы разобраться с целями Ant и пошел оттуда. Теперь у нас есть отчеты о покрытии кода на модуль, и мы объединили один, содержащий покрытие из всех тестов.

0 голосов
/ 18 февраля 2012

Я получил интеграционные тесты, работающие с Maven 3.0.3 и cobertura-maven-plugin 2.5.1, настроив запуск maven-failsafe-plugin на этапе test:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.12</version>
    <executions>
        <execution>
            <phase>test</phase>
            <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>
...