mono - Verwenden von MBUnit in TeamCity

Translate

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

Wie kann ich im Testbericht zusammenführen und "Tests fehlgeschlagen: 1 (1 neu), bestanden: 3049" für den Build anzeigen?

Aktualisieren:Werfen Sie einen Blick auf MBUnitTask, eine NAnt-Aufgabe, die gesendete Nachrichten verwendet, die TeamCity von NUnit erwartet, damit Sie alle Funktionen von TeamCity für Tests verwenden können.

MBUnitTask

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

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Gallio hat jetzt eine Erweiterungum TeamCity-Servicemeldungen auszugeben. Verwenden Sie einfach die mitgelieferte Gallio.NAntTasks.dll und aktivieren Sie die TeamCity-Erweiterung. (diesewird in der nächsten Version nicht benötigt)

Quelle
Translate

TeamCity überwacht die Befehlszeilenausgabe des Builds. Sie können ihm mitteilen, wie Ihre Tests verlaufen, indem Sie bestimmte Markierungen in diese Ausgabe einfügenhttp://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 gestartet wurde. 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 die XSL, die 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>
Quelle
Translate

Folgendes habe ich mir ausgedacht

Wie kann ich den Testbericht zusammenführen?

Zuerst müssen Sie mbunit erhalten, um 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 ein Verzeichnis namens "Berichte" generiert und die Datei heißt "mbunit.xml" und "mbunit.html"

Als nächstes möchten 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 Datei .BuildServer \ config \ main-config.xml und fügen Sie diese Zeile hinzu (unter Windows befindet sich dies in c: \ Dokumente und Einstellungen \, unter Linux im Verzeichnis / root).

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

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

TeamCity sucht nach einer Datei namens teamcity-info.xml, in die Sie Nachrichten einfügen können, um sie anzuzeigen. Die tatsächliche Testanzahl ist eigentlich nur einfacher Text. 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 eine XSLT für den MBUnit-XML-Bericht durchzuführen

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

das eigentliche xsl sieht so aus. (Hinweis: Die {und} sind in xsl reserviert, daher 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>
Quelle
Translate

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

Quelle