我有一个集成测试项目,在项目的
.csproj
文件中具有以下配置:
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<AzureFunctionsVersion>v4</AzureFunctionsVersion>
<RunSettingsFilePath>$(MSBuildProjectDirectory)\project.runsettings</RunSettingsFilePath>
</PropertyGroup>
在与
.csproj
文件相同的目录中,我有文件 project.runsettings
,其中包含:
<?xml version="1.0" encoding="utf-8" ?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="XPlat code coverage">
<Configuration>
<CodeCoverage>
<ModulePaths>
<Exclude>
<ModulePath>microsoft.azure.webjobs.*</ModulePath>
</Exclude>
</ModulePaths>
<UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
<AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
<CollectFromChildProcesses>True</CollectFromChildProcesses>
<CollectAspDotNet>False</CollectAspDotNet>
</CodeCoverage>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
当我在本地运行此测试并检查生成的覆盖率报告时,排除的模块已正确排除;他们没有出现在报告中。但是,当在 DevOps 管道中运行相同的测试时,我看到包含排除的模块:
如何在管道构建中排除它们?我遵循了文档,但我没有看到我所期望的。排除模块的代码覆盖率人为地降低了代码覆盖率的总百分比。
您可以在 VSTest@3 任务中使用
runSettingsFile
来指定运行设置文件的路径。
- task: VSTest@3
inputs:
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\*test*.dll
!**\*TestAdapter.dll
!**\obj\**
searchFolder: '$(System.DefaultWorkingDirectory)'
runSettingsFile: '$(Build.SourcesDirectory)/unit-testing-using-mstest/.runsettings'
codeCoverageEnabled: true