4

我第一次尝试在当前项目中使用 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 个模块部​​分,具有相同的哈希值。有趣的是,第一个模块的 FullName 指向我的“\bin\Debug\MyAssembly.dll”文件夹中的程序集,而第二个模块指向“C:\temp\TestResults...\Out\MyAssembly”中的输出程序集.dll”。

有任何想法吗?

马特

4

1 回答 1

9

您需要使用WIKI/USAGE中记录的 -mergebyhash 开关

这是因为 mstest 在不同的位置打开程序集两次;一次在其原始位置,然后再次在测试文件夹中。

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

于 2011-12-18T03:35:44.143 回答