问题描述
我正在尝试向 Azure DevOps 中的 .NET Framework 4.8 解决方案添加代码覆盖率。我的方法基于问题 here 和 here 以及 coverlet docs,并成功获得了代码覆盖率结果。
但是,此解决方案还包含许多共享项目,这些项目在不同的解决方案中进行了单元测试。我希望从覆盖率报告中排除这些项目以及测试项目本身。
在我的 coverlet.runsettings 文件中,我包含了以下基于 the docs 的行:
<Exclude>[coverlet.*.tests?]*,[*]Coverlet.Core*,[Company.*UnitTest]*</Exclude>
<Include>[Company.Application.*]*</Include>
但是,当使用 VSTest@2 运行测试时,我会在日志中看到以下内容
Provided settings file:
<?xml version="1.0" encoding="utf-8" ?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="XPlat code coverage">
<Configuration>
<Format>cobertura</Format>
<Exclude>[coverlet.*.tests?]*,[Company.*UnitTests]*</Exclude>
<Include>[Company.Application.*]*</Include>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
Updated Run Settings:
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="XPlat code coverage">
<!-- As above -->
</DataCollector>
<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">
<!-- Lots of configuration ommitted for brevity -->
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
<runconfiguration>
<MaxcpuCount>0</MaxcpuCount>
<BatchSize>1000</BatchSize>
<ResultsDirectory>D:\a\_temp\TestResults</ResultsDirectory>
</runconfiguration>
</RunSettings>
**************** Starting test execution *********************
因此看来 VS 测试任务正在即时更改我的运行设置,然后不尊重包含和排除值
我的 yaml 是:
- task: VSTest@2
displayName: 'Run Tests'
inputs:
testAssemblyVer2: '**\*UnitTests*.dll'
searchFolder: '.\Output'
codeCoverageEnabled: true
runSettingsFile: .\Builds\coverlet.runsettings
任何人都可以建议设置或其他方式来尊重包含和排除的内容吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)