2008-08-06 9 views
12

Ich kompiliere ein NAnt-Projekt auf Linux mit TeamCity Continuous Integration Server. Ich konnte einen Testbericht generieren, indem ich NAnt auf Mono über einen Befehlszeilen-Runner laufen ließ, aber nicht die Optionen hatte, den Report wie einen NAnt Runner zu benutzen. Ich verwende auch MBUnit für das Testframework.Verwenden von MBUnit in TeamCity

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

Update: werfen Sie einen Blick auf MBUnitTask ist eine NAnt Aufgabe, die Nachrichten sendet, die TeamCity von NUnit erwartet, damit Sie alle Funktionen von TeamCity für Tests nutzen können.

MBUnitTask

Update: Galio hat eine bessere Unterstützung, so dass Sie nur die Galio MBUnit 3.5 DLLs verweisen müssen anstelle der MBUnit 3.5 dlls und wechseln auf die galio Läufer, damit es funktioniert.

Antwort

6

Gallio now has an extension zur Ausgabe von Teamcity Servicemeldungen wie folgt aussieht . Verwenden Sie einfach die mitgelieferte Gallio.NAntTasks.dll und aktivieren Sie die TeamCity-Erweiterung. (Diese won't be necessary in the next release)

+1

ya ich das neulich aktualisiert, dass beinhalten, macht galio Leben so viel einfacher –

4

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

wird TeamCity wissen, dass eine Reihe von Tests gestartet wurde. Mit MbUnit können Sie diese Markierungen nicht ausgeben, während die Tests ausgeführt werden. Sie können jedoch die XML-Datei, die ausgegeben wird, transformieren. Hier ist die XSL, die ich benutze:

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

Hier ist, was ich kam mit

Wie kann ich im Prüfbericht fusionieren?

Zuerst müssen Sie mbunit dazu bringen, sowohl einen XML- als auch einen HTML-Bericht zu erstellen. Die Befehlszeile Argumente wie folgt aussehen

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

dies die Berichte in einem Verzeichnis namens Berichte erstellen und die Datei mbunit.xml und mbunit.html

nächstes aufgerufen werden wir diese Dateien als Artefakte hinzufügen möchten auf dem Build

build\reports\* => Reports 

der letzte Schritt ist Teamcity zu sagen, es als Registerkarte für den Build hinzufügen

die .BuildServer finden \ config \ main-config.xm l und fügen Sie diese Zeile (auf Windows diese in C: \ Dokumente und Einstellungen \, unter Linux war es im Verzeichnis/root dir)

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

Wie kann ich „Tests zeigen fehlgeschlagen: 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, um angezeigt zu werden. Die tatsächliche Anzahl der Tests ist eigentlich nur einfacher Text. Ich denke, du kannst die Datei einfach als Artefakt hinzufügen, aber ich habe es auch im Root-Verzeichnis des Builds.

in NAnt Sie wollen diesen Befehl verwenden, um einen XSLT auf dem MBUnit XML Bericht

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

die tatsächliche xsl sieht wie folgt aus zu tun. (Hinweis: dass die {und} sind in xsl reserviert, damit wir params verwenden müssen)

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

Dies wird Ihnen eine Datei, die

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