Интеграция 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.

Свежие комментарии