Domanda

Abbiamo un multiprogetto stiamo cercando di eseguire Cobertura copertura dei test report su come parte del nostro mvn sito di costruire.Posso ottenere Cobertura per eseguire il bambino progetti, ma erroneamente indica 0% di copertura, anche se i rapporti ancora evidenziare le righe di codice che sono stati colpiti dal test di unità.

Stiamo usando mvn 2.0.8.Ho provato a correre mvn clean site, mvn clean site:stage e mvn clean package site.So che l'esecuzione dei test, mostrano in surefire rapporti (sia il txt/xml e i rapporti del sito).Mi manca qualcosa nella configurazione?Non Cobertura non funzionerà destra con multiprojects?

Questo è il padre .pom:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <inherited>true</inherited>
                <executions>
                    <execution>
                        <id>clean</id>
                        <goals>
                            <goal>clean</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </pluginManagement>
</build>
<reporting>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <inherited>true</inherited>
        </plugin>
    </plugins>
</reporting>

Ho provato con e senza seguito del bambino .pon:

    <reporting>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
        </plugin>
    </plugins>
</reporting>

Ottengo questo output di compilazione:

...
[INFO] [cobertura:instrument]
[INFO] Cobertura 1.9 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file
Instrumenting 3 files to C:\workspaces\sandbox\CommonJsf\target\generated-classes\cobertura
Cobertura: Saved information on 3 classes.
Instrument time: 186ms

[INFO] Instrumentation was successful.
...
[INFO] Generating "Cobertura Test Coverage" report.
[INFO] Cobertura 1.9 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file
Cobertura: Loaded information on 3 classes.
Report time: 481ms

[INFO] Cobertura Report generation was successful.

E il rapporto di simile a questo:cobertura report

È stato utile?

Soluzione

Ho il sospetto che ti manca una esecuzione di cobertura plugin durante la fase di compilazione, in modo che il codice ottiene solo strumentato con la segnalazione di un plugin, nel sito del ciclo di vita, dopo i test sono stati eseguiti.Quindi, l'esecuzione del test non sono prese perché corrono nel non strumentato codice.Analizzare il log di costruzione con più attenzione - se ho ragione, si noterà che surefire test vengono eseguiti prima di cobertura:strumento.

La mia configurazione è simile alla tua, ma oltre a specificare la pulizia exectution in pluginManagement (come te), specificare la cobertura plugin in modo esplicito nel costruire la sezione plugin:

  <build>
  ...
    <plugins>
    ...
      <plugin>
        <inherited>true</inherited>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>${cobertura.plugin.version}</version>
      </plugin>
    </plugins>
  </build>

La mia configurazione sorta funziona, e tutti Cobertura roba è globale a livello di organizzazione pom, che tutti i progetti è possibile utilizzare come parte di un genitore.

In questo modo i progetti non specifica nulla Cobertura legate al loro pom.xml's, ma ancora generare report su copertura.

Altri suggerimenti

Io non sono riuscita ad ottenere Cobertura di combinare la segnalazione da multi-progetti.Questo è stato un problema in generale con il multi-progetto di reporting.

Abbiamo sottoposto a valutazione sonar come una soluzione per le nostre metriche di reporting.Sembra che fare un grande lavoro di fornire le metriche di riepilogo tra i vari progetti, tra cui multi-proijects.

La soluzione realizzata da me è un po ' manuale, ma funziona.Si compone di diversi passaggi di uno è un passo di combinare i diversi .ser i file generati dal Cobertura.Questo può essere fatto utilizzando la cobertura-unione strumento a riga di comando all'interno di una maven attività.

In base all'output mostra è che i file non sono in realtà strumentato, si dice che solo 3 file di strumentazione.

@Marco è giusto, non è possibile il raggiungimento di questo genere maven solo come maven cobertura plugin non è presente una fusione obiettivo.

Si può ottenere attraverso un mix di maven e ant obiettivi : http://thomassundberg.wordpress.com/2012/02/18/test-coverage-in-a-multi-module-maven-project/

Tuttavia, nel caso in cui si dispone di un unico progetto undertest, non c'è bisogno di unione.Si può, in un progetto di prova, copia il .ser file e strumentazione classi del progetto sotto test :

//in test project
<plugin> 
<groupId>com.github.goldin</groupId>
<artifactId>copy-maven-plugin</artifactId>
<version>0.2.5</version>
<executions>
    <execution>
    <id>copy-cobertura-data-from-project-under-test</id>
    <phase>compile</phase>
    <goals>
        <goal>copy</goal>
    </goals>
    <configuration>
    <resources>
        <resource>
                        <directory>${project.basedir}/../<project-under-test>/target/cobertura</directory>
                            <targetPath>${project.basedir}/target/cobertura</targetPath>
                <includes>                  
                              <include>*.ser</include>
                </includes>
           </resource>
           <resource>
                    <directory>${project.basedir}/../<project-under-test>/target/generated-classes/cobertura/</directory>
                    <targetPath>${project.basedir}/target/generated-classes/cobertura</targetPath>
                    <preservePath>true</preservePath>
           </resource>
        </resources>
            </configuration>
        </execution>
</executions>
</plugin>

//in parent project
<build>
<plugins>
    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>cobertura-maven-plugin</artifactId>
    <configuration>
        <format>xml</format>
        <aggregate>true</aggregate>
    </configuration>
    <executions>
        <execution>
                    <goals>
                <goal>clean</goal>
            </goals>
        </execution>
    </executions>
</plugin>
    </plugins>
</build>
<reporting>
<plugins>
    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>cobertura-maven-plugin</artifactId>
    <version>${cobertura.version}</version>
        </plugin>
</plugins>
 </reporting>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top