代码覆盖率结果定期给出:生成空结果

时间:2013-09-13 10:39:16

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

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

  

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

我已经检查了显而易见的(它的建议),但似乎无法弄清楚是什么导致它。

这是我的runsettings文件:

<?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>

9 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

如果即使在删除* .suo文件后也无法使代码覆盖率生效,请检查事件查看器是否有错误。在我的情况下,每次运行后我都有以下错误:

“由于缺少检测方法,TraceLog Profiler在初始化时失败,进程vstest.executionengine.x86.exe”

我找到了答案here

如果链接不再可用,我会在此处粘贴内容:

  

如果您发现自己有一个空的.coverage文件并看到错误   类似于你的事件日志中的下面你很可能有一个   腐败安装

     

(info).NET Runtime版本4.0.30319.17929 - 分析器具有   请求CLR实例不将探查器加载到此中   处理。 Profiler 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)“\ Team”中存在covrun32.dll和covrun64.dll   工具\动态代码覆盖率“

祝你好运,

Nadav

答案 2 :(得分:1)

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

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

我在使用{9999995d-2cbb-4893-be09-fce80abc7564}(Vs2015探查器)和{6652970f-1756-5d8d-0805-e9aad152aa84}(perfview探测器)的指导下加载探测器时出现0x8007007e错误

希望能帮助别人。

答案 3 :(得分:1)

我只是使用Visual Studio 2019遇到此问题。解决方案是将“测试-> AnyCPU项目的处理器体系结构”设置从X86更新为X64。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

 <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预览版中对其进行修复的唯一内容。

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

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

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

答案 8 :(得分:0)

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