2008-08-06 24 views
12

Tôi đang biên soạn một dự án NAnt trên linux với máy chủ TeamCity Continuous Integration. Tôi đã có thể tạo ra một báo cáo thử nghiệm bằng cách chạy NAnt trên mono thông qua một dòng lệnh Runner nhưng không có các tùy chọn sử dụng báo cáo như một Runner Á hậu. Tôi cũng đang sử dụng MBUnit cho khung kiểm thử.Sử dụng MBUnit trong TeamCity

Làm cách nào tôi có thể hợp nhất trong báo cáo thử nghiệm và hiển thị "Kiểm tra không thành công: 1 (1 mới), đã vượt qua: 3049" cho bản dựng?

Cập nhật: hãy xem MBUnitTask nhiệm vụ NAnt sử dụng gửi thư mà TeamCity mong đợi từ NUnit để nó cho phép bạn sử dụng tất cả các tính năng của TeamCity để kiểm tra.

MBUnitTask

Cập nhật: Galio có hỗ trợ tốt hơn vì vậy bạn chỉ có để tham khảo các dlls Galio MBUnit 3.5 thay vì 3.5 dlls MBUnit và chuyển sang Á hậu Galio để làm cho nó làm việc.

Trả lời

6

Gallio now has an extension đến sản lượng tin nhắn dịch vụ TeamCity . Chỉ cần sử dụng Gallio.NAntTasks.dll đi kèm và bật phần mở rộng TeamCity. (Điều này won't be necessary in the next release)

+1

ya tôi cập nhật này ngày khác để bao gồm đó, Galio làm cho cuộc sống dễ dàng hơn rất nhiều –

4

TeamCity xem đầu ra dòng lệnh từ bản dựng. Bạn có thể cho nó biết cách kiểm tra của bạn bằng cách chèn một số điểm đánh dấu vào đầu ra đó Xem http://www.jetbrains.net/confluence/display/TCD3/Build+Script+Interaction+with+TeamCity. Ví dụ:

##teamcity[testSuiteStarted name='Test1'] 

sẽ cho TeamCity biết rằng một bộ kiểm tra đã bắt đầu. Với MbUnit bạn không thể xuất các dấu này trong khi các thử nghiệm đang chạy, nhưng bạn có thể chuyển đổi tệp XML mà nó xuất ra. Đây là XSL mà tôi đang sử dụng:

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

Đây là những gì tôi đã đưa ra

Làm thế nào tôi có thể hợp nhất trong báo cáo thử nghiệm?

Trước tiên, bạn cần nhận được mbunit để tạo cả báo cáo XML và HTML. Các đối số dòng lệnh giống như thế này

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

này sẽ tạo ra các báo cáo vào một thư mục gọi là báo cáo và các tập tin sẽ được gọi mbunit.xml và mbunit.html

tiếp theo chúng tôi muốn thêm những tập tin như hiện vật về xây dựng

build\reports\* => Reports 

bước cuối cùng là nói với TeamCity để thêm nó như là một tab cho xây dựng

tìm ra .BuildServer \ config \ chính-config.xm l và thêm dòng này (trên cửa sổ này là trong c: \ Documents and Settings \, trên linux đó là trong thư mục/root)

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

Làm thế nào tôi có thể hiển thị "Các thử nghiệm thất bại: 1 (1 mới), được thông qua: 3049 "để xây dựng?

TeamCity tìm kiếm tệp có tên là teamcity-info.xml nơi bạn có thể gắn thư vào để được hiển thị. Số lượng thử nghiệm thực tế thực sự chỉ là văn bản thuần túy. Tôi nghĩ rằng bạn có thể chỉ cần thêm các tập tin như là một tạo tác nhưng tôi cũng đã nhận nó trong thư mục gốc của xây dựng.

trong Nant bạn sẽ muốn sử dụng lệnh này để làm một XSLT trên Báo cáo MBUnit XML

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

xsl thực tế trông như thế này. (Lưu ý: rằng {và} được dành riêng trong xsl vì vậy chúng tôi phải sử dụng 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> 

này sẽ cung cấp cho bạn một tập tin đó trông như thế này

<build number="1.0.{build.number}"> 
    <statusInfo status="FAILURE"> 
     <text action="append">Tests failed: 16, passed: 88</text> 
    </statusInfo> 
</build> 
Các vấn đề liên quan