由于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