문제

TeamCity Continuous Integration 서버를 사용하여 Linux에서 NAnt 프로젝트를 컴파일하고 있습니다.명령줄 실행기를 통해 모노에서 NAnt를 실행하여 테스트 보고서를 생성할 수 있었지만 NAnt 실행기처럼 보고서를 사용할 수 있는 옵션은 없습니다.또한 테스트 프레임워크로 MBUnit을 사용하고 있습니다.

테스트 보고서를 병합하고 "테스트 실패:1개(신규 1개), 통과됨:3049" 빌드용인가요?

업데이트: MBUnitTask를 살펴보세요. TeamCity가 NUnit에서 기대하는 메시지 전송을 사용하는 NAnt 작업이므로 테스트에 TeamCity의 모든 기능을 사용할 수 있습니다.

MBUnit태스크

업데이트: Galio는 더 나은 지원을 제공하므로 MBUnit 3.5 dll 대신 Galio MBUnit 3.5 dll을 참조하고 galio Runner로 전환하면 작동합니다.

도움이 되었습니까?

해결책

Gallio에는 이제 확장 기능이 있습니다. TeamCity 서비스 메시지를 출력합니다.포함된 Gallio.NAntTasks.dll을 사용하고 TeamCity 확장을 활성화하면 됩니다.(이것 다음 릴리스에서는 필요하지 않습니다.)

다른 팁

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>

내가 생각해낸 내용은 다음과 같습니다.

테스트 보고서에 어떻게 병합할 수 있나요?

먼저 XML 및 HTML 보고서를 모두 생성하려면 mbunit을 가져와야 합니다.명령줄 인수는 다음과 같습니다.

/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 에 있습니다.

<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에 예약되어 있으므로 매개변수를 사용해야 합니다)

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

Windows Vista, Windows 7용 TeamCity 사이드바 가젯http://teamcity-gadget.com

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top