As I mentioned before, a team that I am coaching is using
Jenkins for CI. We wanted to automate code coverage measurements for the .Net code in specific assemblies of our solution. (Others are third-party or machine generated, so we don't have unit tests for them.) It took me longer than I would have liked, but I did get
OpenCover running and generating reports as part of our Jenkins build.
One hurdle was that Jenkins seems to need to be run as user
with administrator rights in order for OpenCover to work. So I created one and assigned it in the "Log On" tab.
In my Jenkins job, I opened "Add build step" and selected "Execute Windows batch command". In there, I gave the command line:
"C:\Program Files (x86)\OpenCover\OpenCover.Console.exe" -target:"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\mstest.exe" -targetargs:"/testcontainer:E:\Jenkins\jobs\BuildOurApp\workspace\TRUNK\OurApp.UnitTests\bin\release\OurApp.UnitTests.dll" -filter:"+[OurApp.AssemblyToCover1]* +[OurApp.AssemblyToCover2]*" -register:user -mergebyhash -output:E:\Jenkins\jobs\BuildOurApp\workspace\FilteredCodeCoverage.xml
As an aside, I often have Jenkins jobs with several batch command sections. I found it annoying to scroll up and down and quickly find the one I was looking to edit. So I've started marking the top of each script:
REM _ ___ _ __ _____
REM | | |_ _|| |/ /| ____|
REM | | | | | ' / | _|
REM | |___ | | | . \ | |___
REM |_____||___||_|\_\|_____|
REM
REM _____ _ _ ___ ____
REM |_ _|| | | ||_ _|/ ___|
REM | | | |_| | | | \___ \
REM | | | _ | | | ___) |
REM |_| |_| |_||___||____/
(
http://patorjk.com/software/taag/ , "Standard" font, unchecked "Smush Letters Together" )
I have the
HTML Publisher plugin installed, so I enabled it, clicked Add to add a row and specified:
E:\Jenkins\jobs\BuildOurApp\FilteredCodeCoverageReport
index.htm
Code Coverage Report
as the arguments and it's all set! Now coverage is computed automatically and my team has a single URL for a summary report with drill-down details.