2011-12-16 14 views
3

我一直在第一次使用当前项目的opencover,并刚刚与我的mstest项目一起工作。我有一个问题,因为opencover输出xml似乎试图分析两次相同的程序集。另外值得注意的是,其中一个分析'显示0%的代码覆盖率(这是错误的),而另一个更像是85%(这是正确的)。使用MSTest的OpenCover输出分析相同的程序集两次

我opencover命令如下:

"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 

这是指单个组件,并在组装一个类。但是,xml输出具有2个模块部分,具有相同的散列。有趣的是,第一个模块的FullName指向我的“\ bin \ Debug \ MyAssembly.dll”文件夹中的程序集,而第二个模块指向输出程序集中的“C:\ temp \ TestResults ... \ Out \ MyAssembly .DLL”。

任何想法?

马特

回答

8

您需要使用-mergebyhash开关,这是在WIKI/USAGE

这是因为MSTEST在不同的位置打开装配两次记录;一次在原始位置,然后再次在测试文件夹中。

此选项强制opencover通过文件散列比较程序集,并为先前加载的程序集重用序列点的标识符。如果找不到PDB,可能还需要使用-targetdir指向带有它们的文件夹,但通常在没有额外帮助的情况下找到它们。

相关问题