Подтвердить что ты не робот

Выполнение интеграционных тестов с плагином Cobertura Maven

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

Мой POM

<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.

4b9b3361

Ответ 1

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

Я использую плагин maven JaCoCo. JaCoCo повторно использует отчеты о безотказной работе и/или отказоустойчивых отчетах, чтобы создать покрытие кода из теста на единицу и/или интеграции. Кроме того, JaCoCo имеет хорошую интеграцию Jenkins. Вот пример, где 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>

Ответ 2

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

 <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>

Таким образом, это работает как прелесть для меня.

Ответ 3

После некоторого исследования найдена рабочая конфигурация, указанная в 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>

Ответ 4

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

Цитируя свой веб-сайт:

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

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

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

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

Ответ 5

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

Ответ 6

Я получил тесты интеграции с Maven 3.0.3 и cobertura-maven-plugin 2.5.1, настроив maven-отказоустойчивый плагин для работы во время фазы 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>