【问题标题】:Code Coverage Results periodically gives: Empty results generated代码覆盖结果定期给出: 生成空结果
【发布时间】:2013-09-13 10:39:16
【问题描述】:

在 VS2012 中使用 MSTest 的几个不同项目中,我遇到了一个反复出现的问题,我的代码覆盖率时不时停止工作(似乎是随机的),而是给了我:

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

我已经检查了明显的(建议的内容),但似乎无法弄清楚是什么原因造成的。

这是我的运行设置文件:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="Code Coverage"
                     uri="datacollector://Microsoft/CodeCoverage/2.0"
                     assemblyQualifiedName=" Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, 
                                             Microsoft.VisualStudio.TraceCollector, 
                                             Version=11.0.0.0, 
                                             Culture=neutral, 
                                             PublicKeyToken=b03f5f7f11d50a3a">
        <Configuration>
          <CodeCoverage>
            <ModulePaths>
              <Include>
                <ModulePath>.*\.dll$</ModulePath>
              </Include>
              <Exclude>
                <ModulePath>.*\.tests.dll</ModulePath>
              </Exclude>
            </ModulePaths>
            <Attributes>
              <Exclude>
                <Attribute>.*ExcludeFromCodeCoverageAttribute$</Attribute>
                <Attribute>.*GeneratedCodeAttribute$</Attribute>
              </Exclude>
            </Attributes>

            <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
            <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
            <CollectFromChildProcesses>True</CollectFromChildProcesses>
            <CollectAspDotNet>False</CollectAspDotNet>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

【问题讨论】:

    标签: visual-studio unit-testing code-coverage mstest vs-unit-testing-framework


    【解决方案1】:

    我刚刚使用 Visual Studio 2019 遇到了这个问题。解决方案是转到 VS 中的“测试”菜单项,然后将“测试”->“AnyCPU 项目的处理器架构”设置从 X86 更新为 X64。

    【讨论】:

    • 这解决了我在 VS2019 16.4.2 中的问题。有一个覆盖率为 0% 的 .Net Core 3.0 测试项目。将平台目标从“任何 CPU”更改为“x64”。瞧,现在它报告的覆盖率为 83%。
    • 点赞!另外,这里的屏幕截图:stackoverflow.com/questions/59250411/…
    【解决方案2】:

    这个链接解决了我的问题:Issue with Code Coverage in VS 2012

    关闭 Visual Studio 2012,找到 .suo 文件,删除(或重命名)它,重新启动。工作得很好。不知道 .suo 文件中的什么内容妨碍了正确的覆盖率分析。

    【讨论】:

    • 它有所帮助,但我使用的是 VS 2019,我不得不删除 .vs 文件夹。
    【解决方案3】:

    如果您在删除 *.suo 文件后仍无法使代码覆盖率工作,请检查您的事件查看器是否有错误。就我而言,每次运行后我都会遇到以下错误:

    “由于缺少检测方法,TraceLog Profiler 初始化失败,处理 vstest.executionengine.x86.exe”

    我找到了答案here

    如果链接不再可用,我将内容粘贴在这里:

    如果您发现自己有一个空的 .coverage 文件并看到错误 类似于您的事件日志中的以下内容,您很可能有一个 安装损坏

    (info) .NET 运行时版本 4.0.30319.17929 - 探查器具有 要求 CLR 实例不将分析器加载到此 过程。探查器 CLSID:“{b19f184a-cc62-4137-9a6f-af0f91730165}”。 进程 ID(十进制):12624。消息 ID:[0x2516]。

    (错误) TraceLog Profiler 初始化失败,因为缺少 检测方法,进程 vstest.executionengine.x86.exe

    检查

    a) 环境变量 VS110COMNTOOLS 设置为 \common7\工具

    b) Regkey HKLM\SOFTWARE\Microsoft\VisualStudio\11.0\InstallDir 已设置 到您的 \Common7\IDE\

    c) covrun32.dll 和 covrun64.dll 存在于 "\Team 工具\动态代码覆盖率”

    祝你好运,

    纳达夫

    【讨论】:

    • 谢谢!更新环境变量为我的一位开发人员解决了这个问题,他们最初安装在 C: 上,然后重新安装在 D: 上。卸载/重新安装没有更新环境变量。
    【解决方案4】:

    我在运行 PerfView 后遇到了类似的问题。

    重新运行 perfview 并将其复制到它自己的文件夹中并开始收集运行,然后停止它似乎已经解决了问题。

    我在使用 {9999995d-2cbb-4893-be09-fce80abc7564}(Vs2015 分析器)和 {6652970f-1756-5d8d-0805-e9aad152aa84}(性能分析器)的 guid 加载分析器时遇到 0x8007007e 错误

    希望对其他人有所帮助。

    【讨论】:

      【解决方案5】:

      Microsoft.NET.Test.Sdk 16.3.0+ 中似乎有一个bug,这会导致相同的错误输出,目前的解决方法是降级到对我有用的 16.2.0。除了 MS 提供的故障排除提示here 之外,还可能存在 SDK 问题。

      【讨论】:

      • 谢谢!你解决了我现在遇到的问题。
      【解决方案6】:

      在我的情况下,问题是我的测试 dll 路径包含字符串“DataCollector”,并且似乎 Coverlet 对任何匹配 .*DataCollector.* 之类的路径都有内部忽略

      【讨论】:

        【解决方案7】:

        我修改了与我的调试环境关联的属性组,使其看起来像这样:

         <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
            <DocumentationFile>OurProjectName.xml</DocumentationFile>
            <DebugType>full</DebugType>
            <DebugSymbols>true</DebugSymbols>
          </PropertyGroup>
        

        对于我运行 xUnit 2.4.1 的 core.net 3.1 应用程序,这是在 Visual Studio 2019 预览版中修复它的唯一问题。

        【讨论】:

          【解决方案8】:

          配置测试 -> 处理器架构 >> AnyCPU 项目设置 >>> X86 到 X64。这对我有用

          【讨论】:

            【解决方案9】:

            我也面临同样的问题,并尝试了上述所有选项,但对我不起作用。

            我只有在创建完整的调试信息后才能解决这个问题。完整调试信息的设置可能因版本而异。由于我使用的是 MSVS 2017,因此在构建菜单中有一个子菜单,可以让您拥有完整的调试版本。

            我希望这对其他人也有帮助。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2016-11-07
              • 1970-01-01
              • 2016-03-27
              • 2014-07-23
              • 2011-01-18
              • 1970-01-01
              • 2013-08-18
              相关资源
              最近更新 更多