Run NCover through MSBuild in Team City
After one comment of Chris Walquist on one of my last post about Team City integration of NCover here is the way I run NCover through MSBuild in Team City.
First I need to import the Task of NCover.
<ProjectToolsVersion=”3.5“DefaultTargets=”Build“xmlns=”http://schemas.microsoft.com/developer/msbuild/2003“>
<UsingTask TaskName=”NCoverExplorer.MSBuildTasks.NCover“AssemblyFile=”$(NCoverPath)\Build Task Plugins\NCoverExplorer.MSBuildTasks.dll“ />
<UsingTask TaskName=”NCoverExplorer.MSBuildTasks.NCoverExplorer“AssemblyFile=”$(NCoverPath)\Build Task Plugins\NCoverExplorer.MSBuildTasks.dll“ />
Then I define some properties:
Then I have two targets:
<Target Name=”FullCoverage“>
<Message Text=”#——— Executing NCover ———#“ />
<NCover ToolPath=”$(NCoverPath)“
CommandLineExe=”$(NUnitPath)\nunit-console.exe“
CommandLineArgs=”$(TestDll)“
WorkingDirectory=”$(TestsFolder)\Output\bin\Debug“
ProjectName=”$(ProjectName)“
CoverageFile=”$(CoverageFile)“
FileExclusionPatterns=”$(CoverageExclusions)“
LogFile=”Coverage.log“
AssemblyList=”$(CoverageAssemblies)“ />
<NCoverExplorer ToolPath=”$(NCoverPath)“
ProjectName=”$(ProjectName)“
OutputDir=”$(TestsFolder)\Output“
CoverageFiles=”$(CoverageFile)“
SatisfactoryCoverage=”80“
ReportType=”ModuleClassSummary“
HtmlReportName=”CoverageSummary.html“ />
<NCoverExplorer ToolPath=”$(NCoverPath)“
ProjectName=”$(ProjectName)“
OutputDir=”$(TestsFolder)\Output\Coverage“
CoverageFiles=”$(CoverageFile)“
SatisfactoryCoverage=”80“
ReportType=”FullCoverageReport“
HtmlReportName=”Coverage.html“ />
And finally in the target AfterBuild (more on that in this post) I call target SummaryCoverage or FullCoverage according to the configuration:
<Target Name=”AfterBuild“>
<CallTarget Condition=” ‘$(Configuration)’ == ‘Staging’ “ Targets=”SummaryCoverage“ ContinueOnError=”false“ />
<CallTarget Condition=” ‘$(Configuration)’ == ‘Nightly’ “ Targets=”FullCoverage“ ContinueOnError=”false“ />
That’s it!
Then Chris asked the following:
How did you get your “tests” tab to show up as well? Did you have to run the tests with NUnitLauncher, and then run again for coverage? I read that NUnitLauncher can’t be used to profile, since it kicks off a separate process.
How did you get the “classes”, “header”, “index”, etc. files? I just get the summary.html. I see options for this in ncover.console.exe but not in the
target. Did you use wildcard expressions to pass a list of test assemblies to NCover? If so, would like to see how you did that, too.
- I get the test tab configuring Team City to run my unit tests. That has nothing to do with NCover. And yes doing it so seems to run two time all unit tests. Here is a screen shot of my team city runner configuration:
Read this post “Using NDepend in Team City build management tool“ that talks about for NDepend but shows configuration for NCover too.
The answer is on top of this post!
Hope it helps!