2013-03-05 16 views
8

Ho un progetto Maven con un test case DefaultViewTypeToFragmentMapperTest.java nella directory /src/test/java/test/com/mycompany/myproduct/android/viewtype2fragmentmapper/.cobertura-maven-plugin esclude la configurazione

Desidero che questo test case sia escluso dal calcolo della copertura del test dell'unità. Al fine di ottenere questo risultato, ho configurato il plugin in questo modo:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>cobertura-maven-plugin</artifactId> 
    <version>2.5.2</version> 
    <configuration> 
     <formats> 
      <format>html</format> 
      <format>xml</format> 
     </formats> 
     <instrumentation> 
      <excludes> 
       <exclude>test/co/**/*.class</exclude> 
      </excludes> 
     </instrumentation> 
    </configuration> 
</plugin> 

Ma io continuo a vedere la classe citata nella relazione di copertura.

Come si può risolvere in modo tale che il test case non compaia nel report e la sua copertura (0% in base al report) non venga presa in considerazione?

+2

Hai configurato il plugin cobertura-maven come parte di reporting o generazione? Se hai configurato come segnalazione, utilizza il 'mvn site'. Se si desidera eseguire 'mvn cobertura: cobertura', si prega di configurare come una build. Per ulteriori informazioni, consultare la mia risposta all'indirizzo http://stackoverflow.com/questions/15133822/cant-use-custom-ruleset-in-maven-pmd-plugin-5-0-2/15153145#15153145. –

+0

L'ho configurato come parte del nodo '' e utilizzo solo nell'ambito di 'mvn site'. –

risposta

6

È necessario utilizzare il tag <ignore>.

<configuration> 
    <instrumentation> 
    <ignores> 
     <ignore>com.example.boringcode.*</ignore> 
    </ignores> 
    </instrumentation> 
</configuration> 

<exclude> utilizzato entro <instrumentation> esclude semplicemente il pacchetto da ciò che la vostra strumentazione. Che in questo caso non è nulla perché non stai facendo nulla.

Vedere Mojo Maven Cobertura Plugin docs here.

+0

Ho provato questo e non aiuta. –

+0

Ok, torniamo alla tua dichiarazione di esclusione. Che cos'è il test/co/**/*. Class per te? Il test che il tuo tentativo di escludere non è all'interno di questa struttura del pacchetto. – ninnemannk

+0

La documentazione non spiega realmente la differenza tra "exclude" o "ignore". – FrustratedWithFormsDesigner

5

È un refuso?

<exclude>test/co/**/*.class</exclude>.

Il co deve essere com.

BTW, <ignores> indica a Cobertura di ignorare qualsiasi chiamata a qualsiasi metodo che corrisponde all'espressione regolare ignore. Sarà NON saltare queste classi durante la strumentazione. Per escludere le classi dallo strumento, è necessario utilizzare <excludes>.

+1

No, non lo è. 'Il file test.co.mycompany. *' È corretto. –

+0

Bene, il nome della cartella non corrisponde al nome del pacchetto. Devi mettere "com" Il tuo post dice che il codice è in "/ src/test/java/test/com/mycompany/myproduct/android" –

4

Non si dovrebbe aggiungere i .class come il seguente esempio

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>cobertura-maven-plugin</artifactId> 
    <version>2.5.2</version> 
    <configuration> 
     <formats> 
      <format>html</format> 
      <format>xml</format> 
     </formats> 
     <instrumentation> 
      <excludes> 
       <exclude>test/co/**/*</exclude> 
      </excludes> 
     </instrumentation> 
    </configuration> 
</plugin> 

Spero che questo può aiutare.

+0

Ho provato questo. Sfortunatamente, non funziona. –

+0

rimuovere la classe. Risolto questo per me – jkerak

8

Dopo un sacco di tentativi, ho funzionato.

  1. Modificare il pom.
  2. mvn clean test-compilare
  3. mvn cobertura: Cobertura
  4. riapre la pagina da Firefox. (Assicurarsi che la pagina non è memorizzata nella cache)

ho ottenuto che funziona con:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>cobertura-maven-plugin</artifactId> 
    <version>2.6</version> 
     <configuration> 
      <instrumentation> 
       <excludes> 
        <exclude>aaa/**/*.class</exclude> 
        <exclude>com/test/bbb/**/*.class</exclude> 
       </excludes> 
      </instrumentation> 
     </configuration> 
</plugin> 

Change 'aaa' con l'inizio del nome del pacchetto da escludere. Cambia "bbb" con il nome del pacchetto che si desidera escludere dal report.

Spero che aiuta, Marc Andreu

2

Ho appena perso due ore della mia vita ottenere un'esclusione per Cobertura da escludere, ma alla fine è riuscito.

La soluzione che ho trovato è che la configurazione del plugin con strumentazione & esclusione per la cobertura-maven-plugin deve essere nella build/plugins o costruire/capitolo pluginManagement del pom, mentre ci anche deve essere un riferimento a il plugin cobertura-maven nel capitolo di segnalazione.

Il problema è che inizialmente si inizia a definire il plug-in nel capitolo di segnalazione, altrimenti non viene generato alcun rapporto. Ma la strumentazione stessa non rileva alcuna configurazione da quella parte del pom. È necessario definirlo all'interno del capitolo di costruzione.

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>cobertura-maven-plugin</artifactId> 
       <version>2.7</version> 
       <configuration> 
        <instrumentation> 
         <excludes> 
          <exclude>my/exclusion/package/**</exclude> 
         </excludes> 
        </instrumentation> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

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

Oltre alla risposta BertKoor s', vorrei far notare che se si sta eseguendo mvn cobertura:cobertura o mvn cobertura:cobertura-integration-test direttamente, il rapporto sarà ancora includere la copertura su tutte le classi di strumentazione presenti nella directory di destinazione , come riportato here!

Se questo è il caso, assicuratevi di fare mvn **clean** cobertura:cobertura al fine di ripulire il dir bersaglio da una build precedente prima, e poi strumento ed eseguire i test.

Problemi correlati