Frage

Ich kompiliere ein NAnt-Projekt unter Linux mit dem TeamCity Continuous Integration-Server.Ich konnte einen Testbericht erstellen, indem ich NAnt auf Mono über einen Befehlszeilen-Runner ausführte, hatte aber nicht die Möglichkeit, den Bericht wie einen NAnt-Runner zu verwenden.Ich verwende MBUnit auch für das Test-Framework.

Wie kann ich den Testbericht einbinden und „Tests fehlgeschlagen:“ anzeigen?1 (1 neu), bestanden:3049" für den Build?

Aktualisieren: Schauen Sie sich MBUnitTask an. Es handelt sich um eine NAnt-Aufgabe, die Sendenachrichten verwendet, die TeamCity von NUnit erwartet, sodass Sie alle TeamCity-Funktionen für Tests nutzen können.

MBUnitTask

Aktualisieren: Galio bietet eine bessere Unterstützung, sodass Sie lediglich auf die Galio MBUnit 3.5-DLLs anstelle der MBUnit 3.5-DLLs verweisen und zum Galio-Runner wechseln müssen, damit es funktioniert.

War es hilfreich?

Lösung

Gallio hat jetzt eine Erweiterung um TeamCity-Dienstmeldungen auszugeben.Verwenden Sie einfach die mitgelieferte Gallio.NAntTasks.dll und aktivieren Sie die TeamCity-Erweiterung.(Das wird in der nächsten Version nicht mehr erforderlich sein)

Andere Tipps

TeamCity überwacht die Befehlszeilenausgabe des Builds.Sie können ihm mitteilen, wie Ihre Tests verlaufen, indem Sie bestimmte Markierungen in die Ausgabe einfügen. Siehe http://www.jetbrains.net/confluence/display/TCD3/Build+Script+Interaction+with+TeamCity.Zum Beispiel

##teamcity[testSuiteStarted name='Test1']

teilt TeamCity mit, dass eine Reihe von Tests begonnen hat.Mit MbUnit können Sie diese Markierungen nicht ausgeben, während die Tests ausgeführt werden, aber Sie können die ausgegebene XML-Datei transformieren.Hier ist das XSL, das ich verwende:

<?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>

Hier ist, was ich mir ausgedacht habe

Wie kann ich den Prüfbericht einbinden?

Zuerst müssen Sie mbunit dazu bringen, sowohl einen XML- als auch einen HTML-Bericht zu generieren.Die Befehlszeilenargumente sehen folgendermaßen aus

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

Dadurch werden die Berichte in einem Verzeichnis namens „reports“ generiert und die Dateien heißen „mbunit.xml“ und „mbunit.html“.

Als nächstes wollen wir diese Dateien als Artefakte zum Build hinzufügen

build\reports\* => Reports

Der letzte Schritt besteht darin, Teamcity anzuweisen, es als Registerkarte für den Build hinzuzufügen

Suchen Sie die .buildserver config main-config.xml und fügen Sie diese Zeile hinzu (unter Windows befindet sich dies in C: Dokumenten und Einstellungen , unter Linux war es in der /root-Dire).

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

Wie kann ich „Tests fehlgeschlagen:“ anzeigen?1 (1 neu), bestanden:3049" für den Build?

TeamCity sucht nach einer Datei namens teamcity-info.xml, in die Sie Nachrichten einfügen können, die angezeigt werden sollen.Die tatsächliche Testanzahl ist eigentlich nur Klartext.Ich denke, Sie können die Datei einfach als Artefakt hinzufügen, aber ich habe sie auch im Stammverzeichnis des Builds.

In NAnt möchten Sie diesen Befehl verwenden, um ein XSLT für den MBUnit-XML-Bericht zu erstellen

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

Das eigentliche XSL sieht so aus.(Notiz:dass { und } in XSL reserviert sind, also müssen wir Parameter verwenden)

<?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>

Dadurch erhalten Sie eine Datei, die so aussieht

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

TeamCity Sidebar Gadget für Windows Vista, Windows 7http://teamcity-gadget.com

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top