【问题标题】:Code coverage in VS2013 show coverage of Test and not actual codeVS2013 中的代码覆盖率显示测试覆盖率而不是实际代码
【发布时间】:2015-04-07 16:38:36
【问题描述】:

我正在关注 VS 2013 http://msdn.microsoft.com/en-us/library/dd537628.aspx 中的代码覆盖率文章。它显示了测试的覆盖率,而不是实际代码。

我从测试资源管理器中选择了单元测试,然后点击Analyze Code Coverage -> Selected Test。代码覆盖率窗口在底部打开,它显示了单元测试的dll及其覆盖率,没有显示实际的代码覆盖率的dll。

另外,我查看了文章http://msdn.microsoft.com/library/jj159523.aspx。将 pdbs 和 dll 复制到同一位置。在代码覆盖窗口消息是

生成空结果:未检测任何二进制文件。确保测试运行,加载所需的二进制文件,具有匹配的符号文件,并且没有通过自定义设置排除。欲了解更多信息,请参阅http://go.microsoft.com/fwlink/?LinkID=253731"

对此有什么想法吗?

【问题讨论】:

  • 请在投反对票前发表评论

标签: visual-studio-2013 code-coverage mstest


【解决方案1】:

我已经尝试了链接中给出的步骤。

http://blogs.msdn.com/b/allendm/archive/2012/09/08/empty-coverage-file-with-profiler-related-errors-in-the-event-logs.aspx

如果您使用的是 VS 2013,请稍作改动。

a) 环境变量 VS120COMNTOOLS 设置为 \common7\tools

b) Regkey HKLM\SOFTWARE\Microsoft\VisualStudio\12.0\InstallDir 设置为您的 \Common7\IDE\

c) covrun32.dll 和 covrun64.dll 存在于“\Team Tools\Dynamic Code Coverage”中

删除了 VS110COMNTOOLS 环境变量。这些更改对我有用。

【讨论】:

    【解决方案2】:

    我能够解决我的问题。我的生产 DLL 上没有发生代码覆盖的原因是:reason = "has_fixed_base"。一旦我将此设置更改为:是 (/DYNAMICBASE),覆盖就开始起作用了。

    检查以下步骤会有所帮助:

    1. 打开项目属性
    2. 转到Linker->Advanced页面
    3. 在那,检查Randomized Base Address
    4. 将其更改为是 (/DYNAMICBASE)

    这应该开始代码覆盖。

    【讨论】:

      猜你喜欢
      • 2012-01-18
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      • 2017-05-31
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多