mono - Utilisation de MBUnit dans TeamCity

Translate

Je compile un projet NAnt sur Linux avec le serveur d'intégration continue TeamCity. J'ai pu générer un rapport de test en exécutant NAnt en mono via un exécuteur de ligne de commande mais je n'ai pas la possibilité d'utiliser le rapport comme un NAnt Runner. J'utilise également MBUnit pour le cadre de test.

Comment puis-je fusionner le rapport de test et afficher "Tests échoués: 1 (1 nouveau), réussi: 3049" pour la construction?

Mettre à jour:Jetez un œil à MBUnitTask, c'est une tâche NAnt qui utilise envoie des messages que TeamCity attend de NUnit afin de vous permettre d'utiliser toutes les fonctionnalités de TeamCity pour les tests.

MBUnitTask

Mettre à jour:Galio a un meilleur support, il vous suffit donc de référencer les dll Galio MBUnit 3.5 au lieu des dll MBUnit 3.5 et de passer au galio runner pour le faire fonctionner.

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

Toutes les réponses

Translate

Gallio a maintenant une extensionpour afficher les messages de service TeamCity. Utilisez simplement le Gallio.NAntTasks.dll inclus et activez l'extension TeamCity. (cene sera pas nécessaire dans la prochaine version)

La source
Translate

TeamCity regarde la sortie de ligne de commande de la construction. Vous pouvez lui faire savoir comment se déroulent vos tests en insérant certains marqueurs dans cette sortie Voirhttp://www.jetbrains.net/confluence/display/TCD3/Build+Script+Interaction+with+TeamCity. Par exemple

##teamcity[testSuiteStarted name='Test1']

informera TeamCity qu'une série de tests a commencé. Avec MbUnit, vous ne pouvez pas afficher ces marqueurs pendant l'exécution des tests, mais vous pouvez transformer le fichier XML qu'il génère. Voici le XSL que j'utilise:

<?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>
La source
Translate

Voici ce que j'ai trouvé

Comment puis-je fusionner le rapport de test?

Vous devez d'abord obtenir mbunit pour générer à la fois un rapport XML et HTML. Les arguments de la ligne de commande ressemblent à ceci

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

cela générera les rapports dans un répertoire appelé reports et le fichier s'appellera mbunit.xml et mbunit.html

Ensuite, nous voulons ajouter ces fichiers en tant qu'artéfacts sur la construction

build\reports\* => Reports

la dernière étape consiste à dire à teamcity de l'ajouter comme onglet pour la construction

recherchez le .BuildServer \ config \ main-config.xml et ajoutez cette ligne (sous Windows, c'est dans c: \ Documents and Settings \, sous Linux, c'était dans le répertoire / root)

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

Comment puis-je afficher "Tests échoués: 1 (1 nouveau), réussi: 3049" pour la construction?

TeamCity recherche un fichier appelé teamcity-info.xml dans lequel vous pouvez coller des messages à afficher. Le nombre de tests réel n'est en fait que du texte brut. Je pense que vous pouvez simplement ajouter le fichier en tant qu'artefact, mais je l'ai également dans le répertoire racine de la construction.

dans NAnt vous voudrez utiliser cette commande pour faire un XSLT sur le rapport XML MBUnit

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

le xsl réel ressemble à ceci. (Remarque: que les {et} sont réservés en xsl donc nous devons utiliser des paramètres)

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

Cela vous donnera un fichier qui ressemble à ceci

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

Gadget de la barre latérale TeamCity pour Windows Vista, Windows 7http://teamcity-gadget.com

La source