visual-studio - 括号不包含在 VSO 中单元测试 c# 的代码覆盖范围内
问题描述
VSO 构建管道和 Visual Studio 本地之间存在一些代码覆盖率不一致。我们发现 Visual Studio 中的代码覆盖率更高,因为它将括号计为代码覆盖率的一部分。但由于某种原因,它不计入 VSO 构建管道。有谁知道为什么?这是 VSO 中的已知错误吗?
我们使用 Xunit 和 c# 进行测试,并使用 test.runsettings 排除代码。下面是 test.runsettings 文件
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Configurations that affect the Test Framework -->
<RunConfiguration>
<!-- Path relative to directory that contains .runsettings file-->
<ResultsDirectory>.\TestResults</ResultsDirectory>
<TargetPlatform>x64</TargetPlatform>
<MaxCpuCount>10000</MaxCpuCount>
</RunConfiguration>
<!-- Configurations for data collectors -->
<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>
<Attributes>
<Exclude>
<Attribute>^System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute$</Attribute>
</Exclude>
</Attributes>
<ModulePaths>
<Exclude>
<ModulePath>.*unittests.dll$</ModulePath>
<ModulePath>.*integrationtests.dll$</ModulePath>
<ModulePath>.*xunit.*.dll</ModulePath>
<ModulePath>.*fluentassertions.*$</ModulePath>
<ModulePath>.*moq.*$</ModulePath>
<ModulePath>.*telemetry.extensions.ai.netcore.*$</ModulePath>
<ModulePath>.*newtonsoft.*$</ModulePath>
<ModulePath>.*codeanalysis.*$</ModulePath>
</Exclude>
</ModulePaths>
<!-- We recommend you do not change the following values: -->
<UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
<AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
<CollectFromChildProcesses>True</CollectFromChildProcesses>
<CollectAspDotNet>False</CollectAspDotNet>
</CodeCoverage>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
解决方案
它显示不一致的代码覆盖率的原因是因为在 Visual Studio 中,我运行的是调试模式而不是发布模式。将其更改为Release模式后,编号与VSO编号一致。
推荐阅读
- javascript - Chrome 和 Edge 在选中时以不同方式处理设置为“不确定”的复选框
- c# - 如何在扩展方法中使用 automapper 实例 api
- c# - 将二维数组的索引 [0,0] 作为参数传递给设置字母“O”或“X”的方法
- angular - Angular(6)路由问题
- vue.js - 我可以向 v-for 发送不仅仅是使用 v-model 的值吗
- javascript - 如何在我的 javascript 代码中找到未履行的承诺?
- haskell - 我们可以用lens查询和更新不同层次的结构吗?
- npm - Nodemon:找不到命令
- postgresql - 使用 JOINS 在 postgresql 中更新
- php - 为什么 In_Array() PHP 不适用于多维数组