Главная > Development > Интеграция Atlassian Bamboo и тестов xUnit.net

Интеграция Atlassian Bamboo и тестов xUnit.net

Система непрерывной интеграции Atlassiat Bamboo включает множество плагинов для работы с тестами, но поддержка xUnit.net в это множество, к сожалению, не входит. Но интеграция все же возможна, о ней и расскажем.

Итак, имеется solution, состоящий из множества проектов. Проекты, которые собираются в assembly, и названия которых заказчиваются на Tests являются комплектами xUnit тестов. Сборка всего решения построена на MSBuild, осуществляется сервером Bamboo. Для управления внешними сбоками используется NuGet.

Шаг 1: Подключение xunit в MSBuild

При установке сборок xUnit в проект через NuGet, сборка задачи xunit для MSBuild уже была закачана. Подключим ее к нашему MSBuild проекту.

  <UsingTask
      AssemblyFile="packages\xunit.1.9.0.1566\lib\xunit.runner.msbuild.dll"
      TaskName="Xunit.Runner.MSBuild.xunit"/>

Если вы не используете NuGet, вы можете скачать дистрибутив xunit и положить .dll самостоятельно.

Шаг 2: Подготовка преобразования

В составе поставки Bamboo поддержки xUnit нет, но имеется job task под название NUnit parse. А в поставке xunit имеется описание трансформации лога xUnit в формат NUnit. Воспользуемся этим. Для этого надо скопировать файл NUnitXml.xsl из поставки xunit в корень проекта.

Шаг 3: Добавление задач в скрипт сборки

Теперь надо добавить 2 таргета в скрипт сборки:

  <Target Name="Test" DependsOnTargets="TestClean">
    <ItemGroup>
      <TestAssemblies Include="$(MSBuildProjectDirectory)\*\bin\$(Configuration)\*Tests.dll"/>
    </ItemGroup>

    <xunit Assembly="@(TestAssemblies)" Xml="%(RelativeDir)%(TestAssemblies.FileName).xunit" ContinueOnError="true" Condition="'@(TestAssemblies)' != ''"/>

    <ItemGroup>
      <TestReports Include="$(MSBuildProjectDirectory)/*/bin/$(Configuration)/*Tests.xunit"/>
    </ItemGroup>
    <XslTransformation XmlInputPaths="@(TestReports)" OutputPaths="%(RelativeDir)%(TestReports.FileName).nunit.xml"
                        XslInputPath="NUnitXml.xslt" Condition="'@(TestReports)' != ''"/>
  </Target>

  <Target Name="TestClean" AfterTargets="Clean">
    <ItemGroup>
      <CleanReports Include="$(MSBuildProjectDirectory)/*/bin/$(Configuration)/*Tests.xunit"/>
      <CleanReports Include="$(MSBuildProjectDirectory)/*/bin/$(Configuration)/*Tests.nunit.xml"/>
    </ItemGroup>
    <Delete Files="@(CleanReports)" TreatErrorsAsWarnings="true"/>
  </Target>

После добавление таргетов, вам надо будет настройки использование таргета Test в сбоке на Bamboo. У меня это делается настройками по умолчанию, примерно так:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
         InitialTargets="ValidateSolutionConfiguration;ValidateToolsVersions;ValidateProjects" DefaultTargets="Clean;Build;Test">

NB! Важно, что файл отчета формата NUnit должен иметь расширение xml, иначе его не найдет NUnit Parse Task.

Шаг 4: Настройка парсинга в Bamboo

После задачи сборки проекта добавляем задачу NUnit Parsing. Примерно так:

До этого интерфейса можно добраться:

  • выбрав план сборки,
  • нажав на configure,
  • потом выбрав job сборки.
    • Проверка

      Запустите план на сборку и убедитесь, в том, что тесты поключились и отчет виден через интерфейс Bamboo.

Categories: Development Tags: ,
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.