17

TeamCity継続的インテグレーションサーバーを使用してLinuxでNAntプロジェクトをコンパイルしています。コマンドラインランナーを介してモノラルでNAntを実行することでテストレポートを生成できましたが、NAntランナーのようにレポートを使用するオプションがありません。テストフレームワークにもMBUnitを使用しています。

テストレポートにマージして、ビルドに「テストに失敗しました:1(1つの新規)、合格:3049」と表示するにはどうすればよいですか?

更新: MBUnitTaskを見てください。これは、TeamCityがNUnitに期待するメッセージの送信を使用するNAntタスクであるため、TeamCityのすべての機能をテストに使用できます。

MBUnitTask

更新: Galioのサポートが向上しているため、MBUnit3.5dllではなくGalioMBUnit3.5 dllを参照し、galiorunnerに切り替えて機能させる必要があります。

4

4 に答える 4

6

Gallio には、 TeamCity サービス メッセージを出力するための拡張機能が追加されました。含まれている Gallio.NAntTasks.dll を使用して、TeamCity 拡張機能を有効にするだけです。(これは次のリリースでは必要ありません)

于 2009-05-18T23:07:43.877 に答える
4

TeamCity は、ビルドからのコマンド ライン出力を監視します。その出力に特定のマーカーを挿入することで、テストの進行状況を知らせることができますhttp://www.jetbrains.net/confluence/display/TCD3/Build+Script+Interaction+with+TeamCityを参照してください。例えば

##teamcity[testSuiteStarted name='Test1']

一連のテストが開始されたことを TeamCity に知らせます。MbUnit では、テストの実行中にこれらのマーカーを出力することはできませんが、出力する XML ファイルを変換することはできます。私が使用しているXSLは次のとおりです。

<?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>
于 2008-08-06T23:49:46.600 に答える
3

これが私が思いついたものです

テスト レポートにマージするにはどうすればよいですか?

最初に、mbunit を取得して、XML と HTML の両方のレポートを生成する必要があります。コマンドライン引数は次のようになります

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

これにより、レポートがレポートと呼ばれるディレクトリに生成され、ファイルはmbunit.xmlおよびmbunit.htmlと呼ばれます

次に、これらのファイルをビルドのアーティファクトとして追加します

build\reports\* => Reports

最後のステップは、teamcity にそれをビルドのタブとして追加するように指示することです

.BuildServer\config\main-config.xml を見つけて、この行を追加します (Windows では c:\Documents and Settings\ にあり、Linux では /root ディレクトリにあります)。

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

ビルドに対して「テストに失敗しました: 1 (1 新規)、合格: 3049」を表示するにはどうすればよいですか?

TeamCity は、表示するメッセージを貼り付けることができる teamcity-info.xml というファイルを探します。実際のテスト カウントは、実際には単なるプレーン テキストです。ファイルをアーティファクトとして追加するだけでよいと思いますが、ビルドのルートディレクトリにもあります。

NAnt では、このコマンドを使用して、MBUnit XML レポートで XSLT を実行する必要があります。

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

実際の xsl は次のようになります。(注: { と } は xsl で予約されているため、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>

これにより、次のようなファイルが得られます

<build number="1.0.{build.number}">
   <statusInfo status="FAILURE">
      <text action="append">Tests failed: 16, passed: 88</text>
   </statusInfo>
</build>
于 2008-08-27T14:14:21.570 に答える
-1

Windows Vista、Windows 7 用の TeamCity サイドバー ガジェット http://teamcity-gadget.com

于 2010-02-11T17:21:40.647 に答える