Получение TeamCity для запуска NUNIT Tests с интеграцией NCOVER и TypeMock?

StackOverflow https://stackoverflow.com/questions/4864266

Вопрос

В основном я хотел бы использовать плагин NUNIT для TeamCity (программа, не обязательно конкретный шаг сборки, используя его) для запуска моих модульных тестов, с NCOVER для покрытия кода, и, поскольку мои модульные тесты используют TypeMock 6, мне это тоже нужно. работающий.

Пока что я пробовал:

  • Просто в основном указывая на сборку NUNIT TeamCity на мой DLL, но это не удается со следующим сообщением об ошибке:

    Изолятор Typemock должен быть связан с инструментом покрытия, чтобы включить одно из следующих действий:

    1. Свяжите инструмент покрытия через конфигурацию изолятора TypeMock
    2. запустить тесты через tmockrunner.exe -link
    3. Используйте задачи 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

А потом я добавил следующие два шага сборки в мою конфигурацию сборки команды:

  1. Решение Visual Studio: создайте конфигурацию отладки.
  2. Выполнить C: dev sqldatabases tests.bat (приведенный выше пакетный файл)

Я удостоверился, что coverage.zip был указан в артефактах в моей конфигурации сборки, и теперь я получил покрытие кода, TypeMock и модульные тесты.

Единственное, что я не понял, как получить до сих пор, это то, что если я нажму на результат сборки конфигурации сборки, которая использует обычный графический интерфейс для настройки всего (минус Typemock), я получаю краткое резюме охвата кода. Этого не присутствует в вышеуказанной настройке, но полный отчет, и вкладка в результатах сборки команды.

Надеюсь, это может спасти кого -то другого.

Другие советы

Лассе,

Пока вы используете графический интерфейс TeamCity, бег с охватом Ncover должен быть простой вопросом, чтобы выбрать для бега с ним. Я никогда не пытался бросить TypeMock в микс, поэтому я с нетерпением жду возможности услышать, как это пойдет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top