Dotnet解决方案:代码覆盖率不能排除模块/程序集

问题描述 投票:0回答:1

我有一个集成测试项目,在项目的

.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 管道中运行相同的测试时,我看到包含排除的模块:

如何在管道构建中排除它们?我遵循了文档,但我没有看到我所期望的。排除模块的代码覆盖率人为地降低了代码覆盖率的总百分比。

.net azure-devops code-coverage
1个回答
0
投票

您可以在 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
© www.soinside.com 2019 - 2024. All rights reserved.