2008-08-06 13 views
12

Я компилирую проект NAnt на Linux с сервером непрерывной интеграции TeamCity. Я смог создать тестовый отчет, запустив NAnt на монохромном Runner, но не имеет возможности использовать отчет как NAnt Runner. Я также использую MBUnit для платформы тестирования.Использование MBUnit в TeamCity

Как я могу объединиться в отчете об испытаниях и отобразить «Не удалось выполнить тесты: 1 (1 новый), прошло: 3049» для сборки?

Update: взглянуть на MBUnitTask Сва задача NAnt, которая использует отправляет сообщения, TeamCity ожидает от NUnit, так что позволяет использовать все функции Teamcity для испытаний.

MBUnitTask

Update: Galio имеет лучшую поддержку, так что вы просто должны ссылаться на Galio MBUnit 3.5 DLLs вместо MBUnit 3.5 DLLs и переключиться на Galio бегуна, чтобы заставить его работать.

ответ

6

Gallio now has an extension для вывода служебных сообщений Teamcity , Просто используйте прилагаемый файл Gallio.NAntTasks.dll и включите расширение TeamCity. (Это won't be necessary in the next release)

+1

я я обновил это на другой день, чтобы включать в себя, что, Galio делает жизнь намного проще – 2009-05-19 12:12:40

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

Вот что я придумал

Как можно объединить в протоколе испытаний?

Сначала вам нужно будет создать mbunit для создания отчета XML и HTML. Аргументы командной строки выглядеть следующим образом

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

это будет генерировать отчеты в Dir называется отчеты и файл будет называться mbunit.xml и mbunit.html

рядом мы хотим, чтобы добавить эти файлы как артефакты от комплекции

build\reports\* => Reports 

последний шаг, чтобы сказать TeamCity, чтобы добавить его в качестве закладки для сборки

найти .BuildServer \ Config \ главный-config.xm л и добавить эту строку (на окнах это в C: \ Documents и Settings \, на Linux это было в/корневой директории)

<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, так что мы должны использовать 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>