So you want to produce a coverage report for your .Net project, preferably from the command line? If you use dotCover and NUnit then this:
<?xml version="1.0" encoding="utf-8"?>
<AnalyseParams>
<Executable><!-- Path to your NUnit bin directory e.g. -->C:\Program Files\NUnit 2.5.10\bin\net-2.0\nunit-console.exe</Executable>
<WorkingDir><!-- This path works for running dotCover with a config file in the project directory-->bin\Debug\</WorkingDir>
<Arguments><!-- The dlls containing NUnit tests. Space delimited if more than one-->My.Tests.dll My.MoreTests.dll</Arguments>
<Output><!-- Path to where I want the report. Can be relative or absolute -->My.Tests.Coverage.html</Output>
<Filters>
<IncludeFilters>
<FilterEntry><!-- _ "Module" means project _ --><ModuleMask>*</ModuleMask></FilterEntry>
</IncludeFilters>
<ExcludeFilters>
<FilterEntry><!-- _ "Module" means project _ --><ModuleMask>My.Tests</ModuleMask></FilterEntry>
<FilterEntry><!-- namespaces can be filter with a ClassMask with * wildcard --><ClassMask>Namespaces.For.AutogeneratedCode.*</ClassMask></FilterEntry>
<FilterEntry><ClassMask>SomeUntestable.Class</ClassMask></FilterEntry>
</ExcludeFilters>
</Filters>
<ReportType>html</ReportType>
</AnalyseParams>
will allow you, from the command line, to type:
dotCover analyse MyConfigFileName.xml
and generate coverage reports. Assuming that dotCover is in your path of course.
I like to set the filters to exclude coverge report on the test project itself as well as autogenerated code.
Covering Multiple Test Projects In One Run
- Set your working directory to be a parent of all the test projects, e.g. the solution directory.
- List the full relative paths to each Test dll, space limited:
<WorkingDir>.</WorkingDir>
<Arguments>Web.Tests\bin\Debug\MyProject.Web.Tests.dll Implementation.Tests\bin\Debug\MyProject.Implementation.Tests.dll</Arguments>
Filtering and more advanced coverage configs
- Look down the right hand side of the page here : http://www.jetbrains.com/dotcover/documentation/index.html for documentation, such as it is.
- Filtering is covered here: http://blogs.jetbrains.com/dotnet/2010/07/filtering-with-dotcover/
- More complex stuff is touched on here: http://blogs.jetbrains.com/dotnet/tag/code-coverage/