Domanda

Sto compilando un progetto NAnt su Linux con il server TeamCity Continuous Integration.Sono stato in grado di generare un rapporto di test eseguendo NAnt su mono tramite un Command Line Runner, ma non ho la possibilità di utilizzare il rapporto come un NAnt Runner.Sto anche utilizzando MBUnit per il framework di test.

Come posso unire il rapporto di prova e visualizzare "Test falliti:1 (1 nuovo), approvato:3049" per la costruzione?

Aggiornamento: dai un'occhiata a MBUnitTask è un'attività NAnt che utilizza l'invio di messaggi che TeamCity si aspetta da NUnit in modo da consentirti di utilizzare tutte le funzionalità di TeamCity per i test.

MBUnitTask

Aggiornamento: Galio ha un supporto migliore, quindi devi solo fare riferimento alle dll Galio MBUnit 3.5 invece delle dll MBUnit 3.5 e passare al corridore Galio per farlo funzionare.

È stato utile?

Soluzione

Gallio ora ha una proroga per inviare messaggi di servizio TeamCity.Basta usare Gallio.NAntTasks.dll incluso e abilitare l'estensione TeamCity.(Questo non sarà necessario nella prossima versione)

Altri suggerimenti

TeamCity controlla l'output della riga di comando dalla build.Puoi fargli sapere come stanno andando i tuoi test inserendo determinati marcatori in quell'output Vedi http://www.jetbrains.net/confluence/display/TCD3/Build+Script+Interaction+with+TeamCity.Per esempio

##teamcity[testSuiteStarted name='Test1']

comunicherà a TeamCity che è iniziata una serie di test.Con MbUnit non puoi generare questi marcatori mentre i test sono in esecuzione, ma puoi trasformare il file XML che genera.Ecco l'XSL che sto utilizzando:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>
    <xsl:template match="/">

        <xsl:apply-templates/>

    </xsl:template>

    <xsl:template match="assemblies/assembly">
##teamcity[testSuiteStarted name='<xsl:value-of select="@name" />']

        <xsl:apply-templates select="//run" />

##teamcity[testSuiteFinished name='<xsl:value-of select="@name" />']
    </xsl:template>

    <xsl:template match="run">

        <xsl:choose>
            <xsl:when test="@result='ignore' or @result='skip'">
        ##teamcity[testIgnored name='<xsl:value-of select="@name" />' message='Test Ignored']
            </xsl:when>
            <xsl:otherwise>
        ##teamcity[testStarted name='<xsl:value-of select="@name" />']
            </xsl:otherwise>
        </xsl:choose>


        <xsl:if test="@result='failure'">
            ##teamcity[testFailed name='<xsl:value-of select="@name" />' message='<xsl:value-of select="child::node()/message"/>' details='<xsl:value-of select="normalize-space(child::node()/stack-trace)"/>']
        </xsl:if>


        <xsl:if test="@result!='ignore' and @result!='skip'">
        ##teamcity[testFinished name='<xsl:value-of select="@name" />']
        </xsl:if>

    </xsl:template>

</xsl:stylesheet>

Ecco cosa mi è venuto in mente

Come posso unirli al rapporto di prova?

Per prima cosa dovrai fare in modo che mbunit generi sia un report XML che HTML.Gli argomenti della riga di comando hanno questo aspetto

/rt:Xml /rt:Html /rnf:mbunit /rf:..\reports

questo genererà i report in una directory chiamata report e il file si chiamerà mbunit.xml e mbunit.html

successivamente vogliamo aggiungere questi file come artefatti nel build

build\reports\* => Reports

l'ultimo passaggio è dire a teamcity di aggiungerlo come scheda per la build

Trova .Buildserver config main-config.xml e aggiungi questa riga (su Windows questo è in C: Documents and Impostas , su Linux era nella Dir /root)

<report-tab title="Tests" basePath="Reports" startPage="mbunit.html" />

Come posso visualizzare "Test falliti:1 (1 nuovo), approvato:3049" per la costruzione?

TeamCity cerca un file chiamato teamcity-info.xml in cui puoi inserire i messaggi da visualizzare.Il conteggio effettivo dei test è in realtà solo testo semplice.Penso che puoi semplicemente aggiungere il file come artefatto ma l'ho anche trovato nella directory principale del build.

in NAnt ti consigliamo di utilizzare questo comando per eseguire un XSLT sul report XML MBUnit

<style style="includes\teamcity-info.xsl" in="reports\mbunit.xml" out="..\teamcity-info.xml" />

l'XSL attuale è simile a questo.(Nota:che { e } sono riservati in xsl quindi dobbiamo usare i parametri)

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="cbl" select="'{'"/>
<xsl:param name="cbr" select="'}'"/>
<xsl:template match="/">
<xsl:for-each select="report-result/counter">

<build number="1.0.{concat($cbl,'build.number',$cbr)}">
    <xsl:if test="@failure-count &gt; 0">
        <statusInfo status="FAILURE">    
            <text action="append"> Tests failed: <xsl:value-of select="@failure-count"/>, passed: <xsl:value-of select="@success-count"/></text>
        </statusInfo>
    </xsl:if>
    <xsl:if test="@failure-count = 0">
        <statusInfo status="SUCCESS">
            <text action="append"> Tests passed: <xsl:value-of select="@success-count"/></text>
        </statusInfo>
    </xsl:if>

</build>
</xsl:for-each>

</xsl:template>
</xsl:stylesheet>

Questo ti darà un file simile a questo

<build number="1.0.{build.number}">
   <statusInfo status="FAILURE">
      <text action="append">Tests failed: 16, passed: 88</text>
   </statusInfo>
</build>

Gadget della barra laterale TeamCity per Windows Vista, Windows 7http://teamcity-gadget.com

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