Usando MBUnit em TeamCity

votos
13

Estou compilando um projeto NAnt no Linux com o servidor de integração contínua TeamCity. Eu tenho sido capaz de gerar um relatório de ensaio, executando NAnt em mono através de uma linha de comando Runner, mas não têm a opção de usar o relatório como um NAnt Runner. Eu também estou usando MBUnit para o framework de testes.

Como posso mesclar no relatório de ensaio e exibir testes falhou: 1 (1 novo), passou: 3049 para a construção?

Update: dar uma olhada em MBUnitTask é uma tarefa NAnt que usa envia mensagens que TeamCity espera de NUnit para que ele permite que você use todos os recursos do TeamCity para testes.

MBUnitTask

Update: Galio tem melhor suporte para que você apenas tem que referenciar os Galio MBUnit 3,5 DLLs em vez dos MBUnit 3,5 dlls e mudar para o corredor galio para fazê-lo funcionar.

Publicado 06/08/2008 em 08:41
fonte usuário
Em outras línguas...                            


4 respostas

votos
6

Gallio agora tem uma extensão de mensagens de serviço de saída TeamCity. Basta usar o Gallio.NAntTasks.dll incluído e ativar a extensão TeamCity. (isso não será necessário no próximo lançamento )

Respondeu 19/05/2009 em 00:07
fonte usuário

votos
4

TeamCity observa a saída de linha de comando da compilação. Você pode deixá-lo saber como seus testes estão indo através da inserção de certos marcadores em que a saída Veja http://www.jetbrains.net/confluence/display/TCD3/Build+Script+Interaction+with+TeamCity . Por exemplo

##teamcity[testSuiteStarted name='Test1']

vai deixar TeamCity saber que um conjunto de testes começou. Com MbUnit você não pode produzir estes marcadores enquanto os testes estão em execução, mas você pode transformar o arquivo XML que ele gera. Aqui está o XSL que estou 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>
Respondeu 07/08/2008 em 00:49
fonte usuário

votos
3

Aqui está o que eu vim com

Como posso mesclar no relatório de ensaio?

Primeiro você vai precisar de MbUnit para gerar tanto um XML e HTML relatório. Os argumentos de linha de comando semelhante a este

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

isso irá gerar os relatórios em um dir chamado relatórios eo arquivo será chamado mbunit.xml e mbunit.html

Em seguida, queremos adicionar esses arquivos como artefatos na construção

build\reports\* => Reports

o último passo é dizer TeamCity para adicioná-lo como um guia para a construção

encontrar o .BuildServer \ config \ main-config.xml e adicione essa linha (no Windows isso é em C: \ Documents and Settings \, em linux foi no dir / root)

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

Como posso exibir "testes falhou: 1 (1 novo), passou: 3049" para a construção?

TeamCity procura por um arquivo chamado TeamCity-info.xml onde você pode furar mensagens a serem exibidas. A contagem de teste real é, na verdade, apenas texto simples. Eu acho que você pode apenas adicionar o arquivo como um artefato, mas também tenho-o no diretório raiz da compilação.

em NAnt você vai querer usar este comando para fazer um XSLT sobre o Relatório XML MBUnit

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

o XSL real se parece com isso. (Nota: que a {e} são reservados em xsl por isso temos de 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>

Isto lhe dará um arquivo que se parece com isso

<build number="1.0.{build.number}">
   <statusInfo status="FAILURE">
      <text action="append">Tests failed: 16, passed: 88</text>
   </statusInfo>
</build>
Respondeu 27/08/2008 em 15:14
fonte usuário

votos
-1

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

Respondeu 11/02/2010 em 18:21
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more