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/