TypeMock では独自のランナー プログラムである TMockRunner を使用する必要があるため、TeamCity の GUI オプションを使用してすべてをセットアップする方法はありません。
代わりに、私が最終的に行ったことは、最初に次の内容でカスタム 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 内からテストを実行できます。 build server 後でその決定を変更する可能性があります)。また、TeamCity サーバー用のビルドエージェントは 1 つしかないため、当面はこれで機能します。
上記のファイルに加えて、次のバッチ ファイルを追加しました。
@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
そして、次の 2 つのビルドステップを TeamCity ビルド構成に追加しました。
- Visual Studio の解決策: デバッグ構成をビルドします。
- C:\Dev\SqlDatabases\Tests.bat (上記のバッチ ファイル) を実行します。
ビルド構成のアーティファクトの下にリストされていることを確認しcoverage.zip
たところ、コード カバレッジ、タイプモック、およびユニット テストが得られました。
これまでに取得する方法がわからなかった唯一のことは、通常の TeamCity GUI を使用してすべて (TypeMock を除く) をセットアップするビルド構成のビルド結果をクリックすると、コード カバレッジの短い要約が一覧表示されることです。これは上記のセットアップには存在しませんが、完全なレポートと、TeamCity ビルド結果のタブがあります。
うまくいけば、これが他の誰かのトラブルを救うことができます.