由於TypeMock要求您使用自己的runner程序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中運行測試,如果我得到的東西與我的關係不那麼緊密建立服務器我可能會稍後改變這個決定)。另外,我的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
然後,我添加了以下兩個集結步驟,我的TeamCity構建配置:
- 的Visual Studio解決方案:構建調試配置。
- 執行C:\開發\ SqlDatabases \ Tests.bat(上面的批處理文件)
我確信,coverage.zip
是在文物在我的構建配置上市,現在我得到的代碼覆蓋率,typemock和單元測試。
唯一沒有想到如何得到的東西是,如果我點擊構建配置的構建結果,使用普通的TeamCity GUI設置一切(減去TypeMock),我得到一個代碼覆蓋率在上面的設置中沒有提供簡短的總結,但是完整的報告和TeamCity生成結果中的選項卡。
希望這可以拯救別人一些麻煩。
您可能會在[TeamCity論壇]上獲得更多成功(http://devnet.jetbrains.net/community/teamcity/teamcity?view=discussions)。 – adrianbanks 2011-02-01 15:22:27