Pregunta

Estoy compilando un proyecto NAnt en Linux con el servidor de integración continua TeamCity.Pude generar un informe de prueba ejecutando NAnt en mono a través de Command Line Runner, pero no tengo las opciones de usar el informe como NAnt Runner.También estoy usando MBUnit para el marco de prueba.

¿Cómo puedo fusionar el informe de prueba y mostrar "Pruebas fallidas:1 (1 nuevo), aprobado:3049" para la construcción?

Actualizar: Eche un vistazo a MBUnitTask, es una tarea NAnt que envía mensajes que TeamCity espera de NUnit, por lo que le permite usar todas las funciones de TeamCity para las pruebas.

MBUnidadTarea

Actualizar: Galio tiene un mejor soporte, por lo que solo tiene que hacer referencia a las DLL de Galio MBUnit 3.5 en lugar de las DLL de MBUnit 3.5 y cambiar al corredor de Galio para que funcione.

¿Fue útil?

Solución

Galión ahora tiene una extensión para generar mensajes de servicio de TeamCity.Simplemente use el Gallio.NAntTasks.dll incluido y habilite la extensión TeamCity.(este no será necesario en la próxima versión)

Otros consejos

TeamCity observa el resultado de la línea de comando de la compilación.Puede informarle cómo van sus pruebas insertando ciertos marcadores en esa salida. Ver http://www.jetbrains.net/confluence/display/TCD3/Build+Script+Interaction+with+TeamCity.Por ejemplo

##teamcity[testSuiteStarted name='Test1']

le informará a TeamCity que se inició una serie de pruebas.Con MbUnit no puede generar estos marcadores mientras se ejecutan las pruebas, pero puede transformar el archivo XML que genera.Aquí está el XSL que estoy usando:

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

Esto es lo que se me ocurrió

¿Cómo puedo fusionarme en el informe de prueba?

Primero necesitará obtener mbunit para generar un informe XML y HTML.Los argumentos de la línea de comando se ven así

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

esto generará los informes en un directorio llamado informes y el archivo se llamará mbunit.xml y mbunit.html

A continuación queremos agregar estos archivos como artefactos en la compilación.

build\reports\* => Reports

el último paso es decirle a teamcity que lo agregue como una pestaña para la compilación.

Encuentre el .BuildServer config main-config.xml y agregue esta línea (en Windows esto está en c: documentos y configuraciones , en Linux estaba en /Root Dir)

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

¿Cómo puedo mostrar "Pruebas fallidas:1 (1 nuevo), aprobado:3049" para la construcción?

TeamCity busca un archivo llamado teamcity-info.xml donde puedes pegar mensajes para que se muestren.El recuento de pruebas real es en realidad solo texto sin formato.Creo que puedes agregar el archivo como un artefacto, pero también lo tengo en el directorio raíz de la compilación.

en NAnt querrás usar este comando para hacer un XSLT en el informe XML de MBUnit

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

el xsl real se ve así.(Nota:que los { y } están reservados en xsl por lo que tenemos que usar params)

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

Esto le dará un archivo que se parece a este

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

Gadget de barra lateral de TeamCity para Windows Vista, Windows 7http://teamcity-gadget.com

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top