我已经第一次尝试在当前项目中使用opencover,并且刚刚将其用于我的mstest项目。但是我遇到了一个问题,因为opencover输出xml似乎试图分析同一个程序集两次。同样值得注意的是,其中一个分析显示代码覆盖率为0% (这是错误的),而另一个分析更接近85% (这是正确的)。
我的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个模块secton,具有相同的散列。有趣的是,第一个模块的FullName指向我的"\bin\Debug\MyAssembly.dll“文件夹中的程序集,而第二个模块指向"C:\temp\TestResults...\Out\MyAssembly.dll”文件夹中的输出程序集。
有什么想法吗?
哑光
发布于 2011-12-18 11:35:44
您需要使用WIKI/USAGE中记录的-mergebyhash开关
这是因为mstest在不同位置打开程序集两次;一次是在其原始位置,另一次是在测试文件夹中。
此选项强制opencover通过文件哈希比较程序集,并重新使用以前加载的程序集的序列点的标识符。如果-targetdir找不到PDB,您可能还需要使用它来指向包含PDB的文件夹,但它通常会在没有额外帮助的情况下找到它们。
https://stackoverflow.com/questions/8534562
复制相似问题