Объединить выходные данные NUnit и NAnt в отчете о сборке - PullRequest
5 голосов
/ 06 января 2010

Я только начал использовать CruiseControl.NET, и у меня возникают проблемы с пониманием, почему не работает объединение выходов NAnt и NUnit. Я настроил ccnet.config с типичными значениями, которые можно найти в Google:

<merge>
  <files>
    <file>D:\ccnet\path1\nant-results.xml</file>
    <file>D:\ccnet\path2\TestResult.xml</file>
  </files>
</merge>
<xmllogger /> 

NAnt и ccnet наполовину работают: если я намеренно добавлю код ошибки, то ccnet скажет, что сборка не удалась. То же самое произойдет, если я намеренно проведу неудачный тест: ccnet скажет, что сборка не удалась.

Проблема в том, что на странице ViewBuildReport.aspx не отображаются выходные данные NAnt или NUnit.

Очевидно, что я что-то упускаю, но я не знаю что. Есть идеи?

Ответы [ 3 ]

6 голосов
/ 20 мая 2010

Альберт - я нашел ответ случайно через некоторое время после того, как спросил. Кажется, что это поведение ccnet из коробки . Поэтому по умолчанию он не показывает результаты компиляции в веб-панели управления.

Вам нужно найти файл \ CruiseControl.NET \ webdashboard \ dashboard.config и в разделе buildReportBuildPlugin добавить compile.xsl. Это будет выглядеть так при добавлении:

<buildPlugins>
  <buildReportBuildPlugin>
    <xslFileNames>
      <xslFile>xsl\header.xsl</xslFile>
      <xslFile>xsl\unittests.xsl</xslFile>
      <xslFile>xsl\modifications.xsl</xslFile>
      <xslFile>xsl\NCoverSummary.xsl</xslFile>

      <xslFile>xsl\compile.xsl</xslFile>

    </xslFileNames>
  </buildReportBuildPlugin>
  <buildLogBuildPlugin />
  <xslReportBuildPlugin description="NCover Report" actionName="NCoverBuildReport" xslFileName="xsl\NCover.xsl"></xslReportBuildPlugin>
</buildPlugins>

Документация была очень плохой, и я обнаружил это случайно, когда искал что-то еще. Я не был счастлив, что потратил столько времени, когда небольшая документация или пример на сайте ccnet решили бы это за считанные минуты.

1 голос
/ 06 января 2010

Этот блок находится в разделе издателей?

Вот как выглядит один из моих издателей:

    <publishers>
        <merge>
            <files>
                <file>*-results.xml</file>
            </files>
        </merge>
        <xmllogger />
    </publishers>
0 голосов
/ 07 января 2010

Я пропустил тег издателя, но его добавление ничего не исправило.

Как лучше всего вызывать nant и nunit из ccnet? В настоящее время у меня есть эта настройка, которая мне не нравится:

ccnet с задачей nant, а файл сборки nant использует задачи msbuild и nunit2 для компиляции и тестирования.

Трудно найти достойный пример ccnet, nant и nunit, который действительно объясняет лучший способ использовать их все вместе. Я использую ccnet как сервис, это имеет значение? Я стараюсь сделать это как можно проще, это примерно то, что я делаю:

ccnet.config:

<tasks>
<nant>
<baseDirectory>D:\ccnet\builds\checkout\path</baseDirectory>
<buildFile>go.build</buildFile>
<targetList>
<target>test</target>
</targetList>
</nant>
</tasks>

<publishers>
<merge>
<files>
<file>D:\ccnet\builds\artifacts\path1\nant-results.xml</file>
<file>D:\ccnet\builds\checkout\path\name.dll-results.xml</file>
</files>
</merge>
<xmllogger /> 
</publishers>

А в go.build:

<target name="build" depends="clean">
<msbuild project="name.sln">
</msbuild>
</target>

<target name="test" depends="build">
<nunit2>
<formatter type="Xml" usefile="false" />
<test assemblyname="Tests\path\name.dll" />
</nunit2>
</target>

Если я проверю журнал сборки на приборной панели, то увижу, что в нем есть вывод xml от nant и nunit. Но это не показано на самой приборной панели, с чего бы это? Это очень расстраивает ...

Я пробовал два разных типа подхода: автоматический магический подход ccnet (просто установите usefile = "false" и позвольте ccnet делать свое дело). Это не сработало.

Я также попробовал ручной подход, установил usefile = "true" и затем объединил файлы nant-results.xml и name.dll-results.xml (без подстановочных знаков, просто используя точный путь к файлу, который у меня есть тройной) проверено.)

Это просто не имеет никакого смысла

...