mstest - 使用 MSTest 的 OpenCover 输出分析相同的程序集两次

标签 mstest code-coverage opencover

我第一次尝试在当前项目中使用 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”。

有任何想法吗?

马特

最佳答案

您需要使用 -mergebyhash 开关,此开关记录在 WIKI/USAGE 中。

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

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

关于mstest - 使用 MSTest 的 OpenCover 输出分析相同的程序集两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8534562/

相关文章:

C# Moq 如何设置 EF DbContext 扩展方法 ToList() 以返回 mock.Object.Tolist()

c++ - 分支覆盖率低,尤其是在使用第 3 方库时。前 boost

python - 使用 Python 和 Coverage 构建 Hudson 失败

.net - NUnit 测试在 OpenCover 中失败

c# - 如何在不在 csproj 中链接到项目的情况下引用项目?

tfs中的junit测试结果

c# - 如何在 MSTest 中处理 currentDomain.UnhandledException

python - 运行 gcovr 命令后,无法生成代码覆盖率,也无法从子目录中删除 .gcda

xunit.net - OpenCover 与 Xunit 访问了 1 类中的 0 类

code-coverage - OpenCover 和报告生成器 : How to generate one html report from xml file