Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OpenCover Output with MSTest analyses same assembly twice

I've been having a first go at using opencover for a current project, and have just got it working with my mstest project. I am having a problem though, in that the opencover output xml appears to trying to analyse the same assembly twice. Also worth note is that one of the analysis' shows 0% code coverage (which is wrong), whereas the other is more like 85% (which is correct).

My opencover command looks like:

"opencover.console.exe" -register:user -target:"C:\Program Files (x86)\Microsoft visual Studio 10.0\Common7\IDE\mstest.exe" -output:"C:\temp\coverage.xml" -targetargs:"/testcontainer:MyTestAssembly.dll" -filter:+[MyAssembly]MyNamespace.MyClassName

This is referring to a single assembly, and a single class in that assembly. However, the xml output has 2 module sectons, with the same hash. Interestingly, the first module has a FullName pointing at the assembly in my "\bin\Debug\MyAssembly.dll" folder, whereas the second one points at the output assembly in "C:\temp\TestResults...\Out\MyAssembly.dll".

Any ideas?

Matt

like image 889
Matt Whetton Avatar asked Jan 19 '23 01:01

Matt Whetton


1 Answers

You need to use the -mergebyhash switch this is documented in the WIKI/USAGE

This is because mstest opens the assembly twice in different locations; once in its original location and then again in a test folder.

This option forces opencover to compare assemblies by a file hash and reuse the identifiers for sequence points for previously loaded assemblies. You may also need to use -targetdir, if it can't locate the PDBs, to point to the folder with them in but it usually does find them without extra help.

like image 153
Shaun Wilde Avatar answered Feb 19 '23 08:02

Shaun Wilde