Поскольку TypeMock требует от вас использования их собственной программы запуска, TMockRunner, невозможно просто использовать параметры графического интерфейса в 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.Поскольку я не хотел, чтобы тестовый сценарий был частью моего репозитория, я не добавил его в систему управления версиями (я могу создавать и щелкать правой кнопкой мыши и запускать тесты из Visual Studio, если получаю что-то, не связанное с моимпостроить сервер, я мог бы изменить это решение позже).Кроме того, у меня есть только 1 агент сборки для моего сервера 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
А затем я добавил следующие два шага сборки в конфигурацию сборки TeamCity:
- Решение Visual Studio: создайте конфигурацию отладки.
- Выполните C: \ Dev \ SqlDatabases\ Tests.bat (вышеуказанный пакетный файл)
Я убедился, что coverage.zip
указан в списке артефактов в моей конфигурации сборки, и теперь я получил покрытие кода, typemock и модульные тесты.
Единственное, что я так и не понял, как это сделать, так это то, что если я нажму на результат сборки конфигурации сборки, которая использует обычный графический интерфейс TeamCity для настройки всего (кроме TypeMock), я получу покрытие кодакраткая сводка в списке, это не присутствует в вышеупомянутой настройке, но полный отчет есть, и вкладка в результатах сборки TeamCity.
Надеюсь, это может спасти кого-то еще.