Кобертура и Причал - PullRequest
       38

Кобертура и Причал

4 голосов
/ 07 ноября 2011

Я пытаюсь получить отчет о покрытии при запуске моего веб-приложения на Jetty с использованием cobertura.У нас уже есть cobertura для юнит-тестов с использованием плагина surefire.У нас также настроен плагин failsafe для запуска наших интеграционных тестов.

Я уже (вручную) инструктировал мою войну и развернул ее.

При запуске mvn verify только с интеграционными тестамиПохоже, что cobertura работает, потому что я получаю все новые предупреждения в консоли Eclipse (я запускаю оттуда пристань), вероятно, потому, что cobertura изменил байт-код.Но я не получаю файл .ser для записи даже при вызове "stop" на сервере Jetty.

Я получаю файл .ser при запуске mvn cobertura:cobertura и создается отчетв каталоге target/site моего веб-приложения.Отчет показывает 0% покрытия, потому что cobertura:cobertura не запускает никаких тестов.

Как я могу запустить свои интеграционные тесты, используя отказоустойчивую заставку cobertura для работы?Любые другие предложения?

Спасибо, Бен

Ответы [ 2 ]

5 голосов
/ 13 ноября 2011

Я решил эту проблему с помощью плагина cobertura-it . Он расширяет оригинальный плагин cobertura и позволяет использовать цели только для отчетов. Кроме того, я должен запустить две отдельные команды (см. Ниже) для тестирования и создания отчетов (объединение с 1 командой не работает). Вот моя конфигурация плагина.

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>cobertura-it-maven-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <formats>
            <format>html</format>
        </formats>
        <check>
            <haltOnFailure>false</haltOnFailure>
        </check>
    </configuration>
    <executions>
        <execution>
            <id>pre-integration-test</id>
            <phase>pre-integration-test</phase>
            <goals>
                <goal>cobertura</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>            
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>7.4.2.v20110526</version>
    <configuration>
        <stopKey>aaaaaaaaaaaaa</stopKey>
        <stopPort>8085</stopPort>
    </configuration>
    <executions>
        <execution>
            <id>start-jetty</id>
            <phase>pre-integration-test</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <scanIntervalSeconds>0</scanIntervalSeconds>
                <daemon>true</daemon>
                <classesDirectory>target/generated-classes/cobertura</classesDirectory>
            </configuration>
        </execution>
        <execution>
            <id>stop-jetty</id>
            <phase>post-integration-test</phase>
            <goals>
                <goal>stop</goal>
            </goals>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>net.sourceforge.cobertura</groupId>
            <artifactId>cobertura</artifactId>
            <version>1.9.4.1</version>
        </dependency>
    </dependencies>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.10</version>
    <executions>
        <execution>
              <id>integration-test</id>
              <phase>integration-test</phase>
              <goals>
                  <goal>integration-test</goal>
              </goals>
        </execution>
        <execution>
            <id>verify</id>
            <phase>verify</phase>
            <goals>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
 </plugin>

Итак, я запускаю это: mvn clean verify

Обратите внимание, что после остановки Jetty появляются сообщения cobertura:

[INFO] -------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] -------------------------------------------------------
[INFO] Total time: 1 minute 13 seconds
[INFO] Finished at: Sun Nov 13 12:58:29 ICT 2011
[INFO] Final Memory: 86M/204M
[INFO] -------------------------------------------------------
2011-11-13 12:58:29.765:WARN::4 threads could not be stopped
Flushing results...
Flushing results done
Cobertura: Loaded information on 342 classes.
Cobertura: Saved information on 342 classes.

Наконец, я использую mvn site для генерации отчетов. Вот мой отчет о конфигурации

<reporting>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-report-plugin</artifactId>
            <!-- An error on version 2.8 -->
            <version>2.7</version>
            <configuration>
                <reportsDirectories>
                    <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
                    <reportsDirectory>${project.build.directory}/failsafe-reports</reportsDirectory>
                </reportsDirectories>
            </configuration>
            <reportSets>
                <reportSet>
                    <reports>
                        <report>report-only</report>
                    </reports>
                </reportSet>
            </reportSets>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-project-info-reports-plugin</artifactId>
            <version>2.1</version>
            <configuration>
                <!-- An error that takes long time to generate this report -->
                <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
            </configuration>
            <reportSets>
                <reportSet>
                    <reports>
                        <report>dependencies</report>
                    </reports>
                </reportSet>
            </reportSets>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-it-maven-plugin</artifactId>
            <configuration>
                <formats>
                    <format>html</format>
                    <format>xml</format>
                </formats>
            </configuration>
            <reportSets>
                <reportSet>
                    <reports>
                        <report>report-only</report>
                    </reports>
                </reportSet>
            </reportSets>
        </plugin>
    </plugins>
</reporting>
0 голосов
/ 09 ноября 2011

Возможно, вам нужен тег <execution> для конфигурации cobertura-maven-plugin плагина.На http://mojo.codehaus.org/cobertura-maven-plugin/instrumentingDeploymentArtifact.html есть несколько примеров, но этот ответ выглядит лучше: Как правильно использовать Cobertura с Maven 3.0.2

...