mono nant teamcity mbunit

mono - Usando MBUnit en TeamCity



nant (4)

Equipo de Sidebar de TeamCity para Windows Vista, Windows 7 http://teamcity-gadget.com

Estoy compilando un proyecto NAnt en Linux con el servidor de Integración Continua TeamCity. He podido generar un informe de prueba ejecutando NAnt en mono a través de un Corredor de Línea de Comando, pero no tengo las opciones de usar el informe como un Corredor NAnt. También estoy usando MBUnit para el marco de prueba.

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

Actualización: eche un vistazo a MBUnitTask, es una tarea NAnt que utiliza mensajes de envío que TeamCity espera de NUnit, por lo que le permite usar todas las características de TeamCity para las pruebas.

MBUnitTask

Actualización: Galio tiene una mejor compatibilidad por lo que solo tiene que hacer referencia a los dlls 3.5 de Galio MBUnit en lugar de los dlls 3.5 de MBUnit y cambiar al corredor de galio para que funcione.


Esto es lo que se me ocurrió

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

Primero tendrá que 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

luego queremos agregar estos archivos como artefactos en la construcció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: / Documents and Settings /, en Linux estaba en el directorio / root)

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

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

TeamCity busca un archivo llamado teamcity-info.xml donde puede pegar los mensajes para que se muestren. El recuento de prueba 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á usar este comando para hacer un XSLT en el informe MBUnit XML

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

el xsl real se ve así. (Nota: que {y} están reservados en xsl, así 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 esto

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


TeamCity observa la salida de la línea de comando desde la construcción. Puede dejarle saber cómo van sus pruebas insertando ciertos marcadores en esa salida. Consulte http://www.jetbrains.net/confluence/display/TCD3/Build+Script+Interaction+with+TeamCity . Por ejemplo

##teamcity[testSuiteStarted name=''Test1'']

le informará a TeamCity que comenzó un conjunto 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>