Получение TeamCity для запуска NUNIT Tests с интеграцией NCOVER и TypeMock?
-
27-10-2019 - |
Вопрос
В основном я хотел бы использовать плагин NUNIT для TeamCity (программа, не обязательно конкретный шаг сборки, используя его) для запуска моих модульных тестов, с NCOVER для покрытия кода, и, поскольку мои модульные тесты используют TypeMock 6, мне это тоже нужно. работающий.
Пока что я пробовал:
Просто в основном указывая на сборку NUNIT TeamCity на мой DLL, но это не удается со следующим сообщением об ошибке:
Изолятор Typemock должен быть связан с инструментом покрытия, чтобы включить одно из следующих действий:
- Свяжите инструмент покрытия через конфигурацию изолятора TypeMock
- запустить тесты через tmockrunner.exe -link
- Используйте задачи TypeMockStart для MSBUILD или NANT по ссылке
Пытаясь выяснить правильную командную строку, я попробовал это:
C: ... изолятор 6.0 tmockrunner.exe "c: teamcity ... jetbrains.buildserver.nunitlauncher.exe" v4.0 msil nunit-2.5.9 myassembly.dll
Это терпит неудачу с той же ошибкой.
Установка переменных среды, найденные в
mocking_on.bat
Файл Часть TypeMock, это не меняет результат.
Обратите внимание, что приведенные выше примеры не содержат никакой ссылки на Ncover (пока), это потому, что я взламывал командную строку в течение нескольких часов с приведенными выше примерами и до сих пор не получал базовых синхронизации. Ncover-дополнительные варианты для Nunit-Launcher of TeamCity, поэтому я надеюсь, что это так же просто, как просто позволить этому, когда я зайду так далеко.
Решение
Поскольку Typemock требует, чтобы вы использовали свою собственную программу «Бегун» Tmockrunner, нет никакого способа просто использовать варианты GUI в TeamCity, чтобы все настроить.
Вместо этого я в итоге сделал, так это сначала построить пользовательский файл MSBuild с этим содержимым:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<TypeMockLocation>C:\Program Files (x86)\TypeMock\Isolator\6.0</TypeMockLocation>
<NUnit>"C:\TeamCity\buildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.NUnitLauncher.exe"</NUnit>
<NCover>C:\Program Files (x86)\NCover\NCover.Console.exe</NCover>
</PropertyGroup>
<Import Project="$(TypeMockLocation)\TypeMock.MSBuild.Tasks"/>
<Target Name="TestWithTypeMock">
<TypeMockStart Link="NCover3.0" ProfilerLaunchedFirst="true" Target="2.0"/>
<Exec ContinueOnError="true" Command="$(NUnit) v2.0 x86 NUnit-2.5.9 SqlDatabases.Core.Tests\bin\Debug\SqlDatabases.Core.Tests.dll SqlDatabases.SqlServer.Tests\bin\Debug\SqlDatabases.SqlServer.Tests.dll /ncover:%22$(NCover)%22 /ncover-arg://ias /ncover-arg:SqlDatabases.Core /ncover-arg://ias /ncover-arg:SqlDatabases.SqlServer /ncover-arg://et /ncover-arg:.*Exception /ncover-arg://x /ncover-arg:c:\temp\coverage.xml"/>
<TypeMockStop/>
</Target>
</Project>
Этот файл я сохраняю в каталоге на моем сервере TeamCity. Поскольку я не хотел, чтобы тестовый скрипт был частью моего репозитория, я не добавил его в управление источником (я могу строить и щелкнуть правой кнопкой Построить сервер, я могу изменить это решение позже). Кроме того, у меня есть только 1 сборник Agent для моего сервера TeamCity, так что это работает для меня на данный момент.
В дополнение к вышеуказанному файлу, я добавил следующий пакетный файл:
@echo off
setlocal
set CURDIR=%CD%
copy c:\dev\sqldatabases\tests.msbuild .\
msbuild tests.msbuild /target:TestWithTypeMock
rd /s /q c:\dev\sqldatabases\codecoverage
md c:\dev\sqldatabases\codecoverage
"c:\program files\ncover\ncover.reporting.exe" c:\temp\coverage.xml //or FullCoverageReport:Html:c:\dev\sqldatabases\codecoverage
cd \dev\sqldatabases\codecoverage
del %CURDIR%\coverage.zip
7z a -r %CURDIR%\coverage.zip
А потом я добавил следующие два шага сборки в мою конфигурацию сборки команды:
- Решение Visual Studio: создайте конфигурацию отладки.
- Выполнить C: dev sqldatabases tests.bat (приведенный выше пакетный файл)
Я удостоверился, что coverage.zip
был указан в артефактах в моей конфигурации сборки, и теперь я получил покрытие кода, TypeMock и модульные тесты.
Единственное, что я не понял, как получить до сих пор, это то, что если я нажму на результат сборки конфигурации сборки, которая использует обычный графический интерфейс для настройки всего (минус Typemock), я получаю краткое резюме охвата кода. Этого не присутствует в вышеуказанной настройке, но полный отчет, и вкладка в результатах сборки команды.
Надеюсь, это может спасти кого -то другого.
Другие советы
Лассе,
Пока вы используете графический интерфейс TeamCity, бег с охватом Ncover должен быть простой вопросом, чтобы выбрать для бега с ним. Я никогда не пытался бросить TypeMock в микс, поэтому я с нетерпением жду возможности услышать, как это пойдет.