سؤال

أقوم بتجميع مشروع NAnt على نظام التشغيل Linux باستخدام خادم التكامل المستمر TeamCity.لقد تمكنت من إنشاء تقرير اختبار عن طريق تشغيل NAnt on mono من خلال Command Line Runner ولكن ليس لدي خيارات استخدام التقرير مثل NAnt Runner.أنا أيضًا أستخدم MBUnit لإطار عمل الاختبار.

كيف يمكنني الدمج في تقرير الاختبار وعرض رسالة "فشلت الاختبارات:1 (1 جديد)، تم إقراره:3049" للبناء؟

تحديث: ألقِ نظرة على MBUnitTask، فهي مهمة NAnt تستخدم إرسال الرسائل التي يتوقعها TeamCity من NUnit، لذا فهي تتيح لك استخدام جميع ميزات TeamCity للاختبارات.

MBUnitTask

تحديث: يتمتع Galio بدعم أفضل لذا عليك فقط الرجوع إلى ملفات Galio MBUnit 3.5 dlls بدلاً من MBUnit 3.5 dlls والانتقال إلى galio runner حتى يعمل.

هل كانت مفيدة؟

المحلول

جاليو لديه الآن امتداد لإخراج رسائل خدمة 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>

وهنا ما توصلت إليه

كيف يمكنني الدمج في تقرير الاختبار؟

ستحتاج أولاً إلى الحصول على 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 والإعدادات ، على linux كان في /root dir)

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

كيف يمكنني عرض "الاختبارات الفاشلة:1 (1 جديد)، تم إقراره:3049" للبناء؟

يبحث TeamCity عن ملف يسمى teamcity-info.xml حيث يمكنك لصق الرسائل فيه ليتم عرضها.عدد الاختبار الفعلي هو في الواقع مجرد نص عادي.أعتقد أنه يمكنك فقط إضافة الملف باعتباره قطعة أثرية ولكنني حصلت عليه أيضًا في الدليل الجذر للبناء.

في NAnt، ستحتاج إلى استخدام هذا الأمر لإجراء XSLT على تقرير MBUnit XML

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

أداة الشريط الجانبي TeamCity لنظام التشغيل Windows Vista وWindows 7http://teamcity-gadget.com

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top