【问题标题】:Can OpenCover get code coverage with Microsoft.Moles.Runner and Nunit?OpenCover 能否使用 Microsoft.Moles.Runner 和 Nunit 获得代码覆盖率?
【发布时间】:2012-07-10 06:22:45
【问题描述】:

我在 Visual Studio2010 专业版中使用 OpenCover。 它在命令行上与 NUnit 配合得很好。

OpenCover.Console.exe -register:user -target:"C:\bin\NUnit 2.6\bin\nunit-console.exe" -targetargs:"C:\App\Test\ApplicationTest\bin\Debug\ApplicationTest.dll"  -targetdir:"C:\App\bin\Debug" -output:html\result.xml

结果如下。

NUnit-Console 版本 2.6.0.12051 版权所有 (C) 2002-20011 Charlie
普尔。版权所有 (C) 2002-2004 James W. Newkirk, Michael C. Two,
阿列克谢·A·沃龙佐夫。版权所有 (C) 2000-2002 菲利普·克雷格。版权所有
已保留。

运行时环境 - 操作系统版本:Microsoft Windows NT 6.1.7601
Service Pack 1 CLR 版本:4.0.30319.269 (Net 4.0)

ProcessModel:默认 DomainUsage:单次执行运行时:
net-4.0 .. 测试运行:2,错误:0,失败:0,不确定:0,
时间:42.14 秒未运行:0,无效:0,忽略:0,跳过:0

提交... 已访问 175 个课程中的 59 个 (33.7142857142857) 已访问
方法 268 of 4131 (6.48753328491891) 访问点 15137 of 71763
(21.0930423755975) 访问了 8025 个分支机构中的 196 个 (2.44236760124611)

==== 替代结果(包括所有方法,包括那些没有
相应的来源)==== 207 课中的第 59 课
(28.5024154589372) 替代访问方法 284 of 4371
(6.49736902310684)

但它不适用于 Microsoft.Moles。

OpenCover.Console.exe -register:user -target:"C:\Program Files\Microsoft Moles\bin\moles.runner.x86.exe" -targetargs:"""C:\App\Test\ApplicationTest\bin\Debug\ApplicationTest.dll""  /r:""C:\bin\NUnit 2.6\bin\nunit-console.exe""" -targetdir:"C:\App\bin\Debug" -output:html\result.xml

这个结果如下。

Microsoft Moles Runner v0.94.51023.0 --
http://research.microsoft.com/moles -- . NET v4.0.30319 版权所有 (c)
微软公司 2007-2010。保留所有权利。

仪器...开始
NUnit-Console 版本 2.6.0.12051
CLR 版本:4.0.30319.269 (Net 4.0)

ProcessModel:默认 DomainUsage:单次执行运行时:
net-4.0 .. 测试运行:2,错误:0,失败:0,不确定:0,
时间:28.004 秒未运行:0,无效:0,忽略:0,跳过:0

提交中... 访问过的类 0 of 2 (0) 访问过的方法 0 of 14 (0)
访问过的点 0 of 45 (0) 访问过的分支机构 0 of 2 (0)

==== 替代结果(包括所有方法,包括那些没有对应的方法
来源)==== 替代访问课程 0 of 2 (0)
替代访问方法 0 of 16 (0)

测试结果都正确,但没有覆盖。

我尝试更改 moles 的参数,例如 '/args:"/domain=Multiple"'、-oldType 等,但始终无效。

有人注意到我应该做什么吗? OpenCover 可以在 Nunit 中使用痣吗?

【问题讨论】:

  • 我自己解决了这个问题。首先,在下面添加。 set CLRMONITOR_EXTERNAL_PROFILERS={1542C21D-80C3-45E6-A56C-A9C1E4BEB7B8}s135.codeinspot.com/q/2342744
  • 而且我知道 NUnit 版本更重要。 v2.5.2 工作正常。但 v2.6 不是。
  • 这已在之前的 stackoverflow 问题stackoverflow.com/questions/7013990/… 中讨论过 - 这里的问题是 moles 也是一个重写分析器,因此两者发生冲突 - 但是您可以通知 moles 它需要“链接”到opencover(或任何其他分析器),以便两者同步工作
  • 非常感谢您的评论。

标签: nunit moles opencover


【解决方案1】:

我自己解决了这个问题。 首先,将以下代码添加到批处理文件中或将其设置为命令行命令。

设置 CLRMONITOR_EXTERNAL_PROFILERS={1542C21D-80C3-45E6-A56C-A9C1E4BEB7B8}

此链接可能会有所帮助。 http://s135.codeinspot.com/q/2342744

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-30
    • 2011-04-27
    • 2023-04-07
    • 2017-04-11
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 2012-02-23
    相关资源
    最近更新 更多