Domanda

C'è un modo per escludere il codice da includere nei report di copertura Cobertura? Abbiamo alcuni metodi che non dovrebbero essere inclusi nella relazione di copertura e quindi non guidano i numeri di copertura.

So che Clover ha una tale funzionalità, ma non ho trovato nulla di simile per Cobertura.

È stato utile?

Soluzione

È possibile escludere le classi dalla strumentazione. Quindi non dovrebbero apparire sul report. Vedere esclude le dichiarazioni riportate di seguito.

È anche possibile ignorare le chiamate verso alcuni metodi. Vedere ignorare dichiarazione di sotto.

Se si utilizza Maven, vedi Maven plug manuale .

    <configuration>
      <instrumentation>
        <ignores>
          <ignore>com.example.boringcode.*</ignore>
        </ignores>
        <excludes>
          <exclude>com/example/dullcode/**/*.class</exclude>
          <exclude>com/example/**/*Test.class</exclude>
        </excludes>
      </instrumentation>
    </configuration>

E per ant vedere questo .

<cobertura-instrument todir="${instrumented.dir}">
  <ignore regex="org.apache.log4j.*" />
  <fileset dir="${classes.dir}">
    <include name="**/*.class" />
    <exclude name="**/*Test.class" />
  </fileset>
  <fileset dir="${jars.dir}">
    <include name="my-simple-plugin.jar" />
  </fileset>
</cobertura-instrument>

Altri suggerimenti

Questo è stato rompendo la testa da qualche tempo.

Il mio problema era che avevo l'esperto di cobertura plug-installazione nella sezione di segnalazione al posto della sezione di accumulo.

Le impostazioni di strumentazione, e quindi l'esclusione di classi o pacchetti, non verranno applicate se non si imposta in su nella sezione di generazione, in modo da guardare fuori per questo.

Ricordati di escludere anche le classi interne.

<exclude>path/to/class/MyClass*.class</exclude>

Mi c'è voluto molto tempo per notare mi mancava un asterisco!

Cobertura non fornisce attualmente una tale funzione, e nemmeno Emma (che usiamo), anche se è elencato come una prossima valorizzazione - anche se sotto forma di una proroga per le regole di esclusione Credo piuttosto che come un'annotazione.

sarebbe utile per coprire fuori quelle poche curve inaccessibili in modo pulito in modo da poter lottare per il 100%, senza essere ridicolo.

Credo che le annotazioni sarebbe probabilmente un modo amichevole per farlo, ma che dovrebbero essere abbastanza esplicitamente nominato e sulla base di un elenco di scenari accettabili come temo altrimenti qualcosa come '@ExcludeFromCoverage' otterrebbe aggiunto rispetto generosamente.

Da 2.0 è possibile scrivere il proprio annotazione @CoverageIgnore.

Sarà riconosciuto da Cobertura, che eviterà considerando annotati Metodi (non funziona su classi per quanto ne so).

  1. Crea un'annotazione vuota:
public @interface CoverageIgnore {}
  1. Quindi annotare i metodi che si desidera escludere dai rapporti:
public class SomeClass {
    @CoverageIgnore
    public void foo(String baz) {
        // useless stuff
    }
}

Fonte: https://github.com/cobertura/cobertura/wiki/Coverage -Annotations

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top