Domanda

Abbiamo il nostro TeamCity costruisce configurato utilizzando una catena di generazione, in modo che i nostri test di unità e di integrazione e test possono essere eseguiti in parallelo, quando innescato da un commit:

  • Crea Chain - dipendente da:
    • Prove di unità
    • test di integrazione

Sto cercando un modo che possiamo combinare / fondere i dati di copertura generati dai test di unità e di integrazione nella catena di generazione, in modo che possiamo ottenere un quadro migliore di quanto reale di codice è coperto da due messi insieme.

Il piano è quindi di essere in grado di monitorare i cambiamenti nella copertura del codice di impegno, e forse mancanza costruisce se le percentuali cadere!

È stato utile?

Soluzione

Ho creato il target 'costruire la catena' in modo che i file di copertura (* .EM, * .ec) dagli obiettivi di unità e di integrazione sono a sua disposizione.

ho creato un file di configurazione formica appositamente per il target catena di build (con l'aiuto del doco emma!):

<project name="coverage-merge" basedir="." default="all">
    <!-- directory that contains emma.jar and emma_ant.jar: -->
    <property name="emma.dir" value="${basedir}/lib"/>
    <property name="coverage.dir" location="${basedir}/coverage"/>

    <path id="emma.lib">
        <pathelement location="${emma.dir}/emma-teamcity-3.1.1.jar"/>
        <pathelement location="${emma.dir}/emma_ant-2.0.5312.jar"/>
    </path>

    <taskdef resource="emma_ant.properties" classpathref="emma.lib"/>

    <target name="all" depends="-report"/>

    <target name="-report">
        <emma>
            <report sourcepath="${src.dir}" sort="+block,+name,+method,+class" 
                    metrics="method:70,block:80,line:80,class:100">
                <infileset dir="${coverage.dir}" includes="**/*.em, **/*.ec"/>

                <!-- for every type of report desired, configure a nested
                     element; various report parameters
                     can be inherited from the parent <report>
                     and individually overridden for each report type:
                -->
                <txt outfile="${coverage.dir}/coverage.txt" depth="package" 
                        columns="class,method,block,line,name"/>
                <xml outfile="${coverage.dir}/coverage.xml" depth="package"/>
                <html outfile="${coverage.dir}/coverage.html" depth="method" 
                        columns="name,class,method,block,line"/>
            </report>
        </emma>
    </target>
</project>

... che unisce tutti i file di copertura in un unico report!

Il parametro metrics del report imposta la soglia clou per il report HTML, in modo che le percentuali contro i pacchetti ei file che è inferiore alla soglia di sono evidenziati in rosso.

Modifica l'output XML mi permetterà di usare qualcosa come Andariel per eseguire un XPath sui risultati, e quindi forzare la build a fallire se le soglie non sono soddisfatte!

Altri suggerimenti

del TC Emma doc

  

Tutto il riempimento. * File vengono rimossi all'inizio del costruire, in modo da avere al fine di garantire che la piena ricompilazione delle fonti viene eseguita nella build per avere il file coverage.em vero e proprio.

Quello che ho fatto per risolvere questo è qui sotto:

  • Usa -out emma.em in TeamCity costruire i passaggi di configurazione, e assicurarsi che l'opzione è impostata su merge true per preservare i dati strumentati.
  • Nell'ultimo passaggio quando viene generato rapporto di copertura, utilizzare Task mossa di formica <move file="$YOUR_PATH/emma.em" tofile="$YOUR_PATH/coverage.em"/> per rinominare a quello di default.
  • Il rapporto emma prenderà il file predefinito em per generare il rapporto.

Spero che questo aiuti chiunque che cosa è di avere un rapporto di copertura di emma accumulato.

La maggior parte degli strumenti di copertura del codice che ho incontrato non sembrano avere un modo per combinare i risultati dei test da sottosistemi diversi o sovrapposti. Come avete sottolineato, si tratta di una capacità molto utile.

I nostri strumenti di copertura SD prova fare hanno questa capacità e sono disponibili per Java, C, C ++, C #, PHP e COBOL. In realtà, gli strumenti di copertura di test SD possono combinare i dati di copertura di test da più lingue in un unico risultato monolitico, in modo da poter avere una panoramica della copertura di test per le applicazioni multi-lingue. E 'in grado di mostrare la copertura su tutti i linguaggi di origine coinvolti, oltre a fornire report di riepilogo.

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