I'm trying to integrate OpenCover with CruiseControl.NET. At this point I've modified by build system so it runs my nunit tests under OpenCover. I then generate Xml and Html reports from those using ReportGenerator.
Assuming it's possible to integrate the reports generated by ReportGenerator into the CruiseControl.NET webapp, how do I integrate the two?
NCover has it's own NCoverReporting task that can be used, but as I'm not running NCover I can't compare its output with the XML reports generated by OpenCover.
Related thoughts / questions:
- OpenCover generates an XML file by default, but is that XML file consumable by cc.net?
- ReportGenerator also generates XML, are they intended for something like cc.net?
- cc.net has a File-Merge publisher that merges logs, but I haven't yet found any documentation indicating which file formats are useful/used by cc.net.
I had this problem and I solved it with these steps, take into account that I'm using msbuild, so this will only work if you're using msbuild:
- Add a Target for Coverage
- Add a task to your build.proj for creating the OpenCoverage output (OpenCoverReport.xml)
- Right after after that, add a task for creating the Summary report using
ReportGenerator (reporttypes:XML). Like so: MSBuild Coverage Target Example
- Create the XSL Transforms for creating HTML output with the Summary.xml, don't worry I wrote it already: For parsing assembly level coverage (in your build log output) use the following: XSLT for an Assembly level coverage report and for parsing the Class level coverage (detailed report) use the following: XSLT for a Class level coverage report
- Add the buildReportBuildPlugin and xslReportBuildPlugin for creating both reports using the previous XSLT files in your dashboard.config file: Add this to the configuration
- Merge the coverage report summary XML file to the Build output, in your ccnet.config file: add this to your configuration
You could use External Links in your ccnet.config after exposing your report via IIS
<externalLinks>
<externalLink name="Code Coverage" url="http://cc.net/coverage" />
</externalLinks>