我在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>
答案 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.* 之类的路径都有内部忽略。