8

我在 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>
4

9 回答 9

29

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

于 2019-12-16T14:32:06.193 回答
7

此链接解决了我的问题:VS 2012 中的代码覆盖率问题

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

于 2013-10-14T18:14:48.563 回答
2

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

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

我在这里找到了答案。

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

​</p>

如果您发现自己的 .coverage 文件为空,并且在事件日志中看到类似于以下的错误,则您很可能安装已损坏

(信息).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\tools

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

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

祝你好运,

纳达夫

于 2014-02-12T12:47:19.597 回答
1

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

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

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

希望对其他人有所帮助。

于 2016-04-28T12:56:06.643 回答
1

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

于 2019-12-09T21:47:52.377 回答
1

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

于 2021-06-07T17:38:18.640 回答
0

我修改了与我的调试环境关联的属性组,使其如下所示:

 <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 预览版中修复它的唯一方法。

于 2020-03-05T19:14:54.930 回答
0

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

于 2020-05-29T17:25:09.333 回答
0

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

我只有在创建完整的调试信息后才能解决这个问题。完整调试信息的设置可能因版本而异。当我使用 MSVS 2017 时,在构建菜单中有一个允许拥有完整调试版本的子菜单。

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

于 2020-10-27T04:44:34.693 回答