问题描述
我有一个 .NET 核心项目,我想在 Azure Pipelines 上运行测试并发布测试覆盖率。
问题是:我使用 EF 生成迁移文件。我想从测试中忽略这些文件 但我不能。
有人如何向管道命令添加一些参数以忽略这些文件?像 --exclude Migrations/*.cs
这是我的 azure-pipelines.yaml 中的工作
- job: Testing
steps:
- task: UseDotNet@2
displayName: 'Use .Net Core sdk 3.1.x'
inputs:
version: 3.1.x
- task: DotNetCoreCLI@2
inputs:
command: 'test'
projects: '$(build.sourcesDirectory)/tests/*Tests/*.csproj'
arguments: -c $(BuildConfiguration) --logger trx --collect:"XPlat Code Coverage" --settings:$(build.sourcesDirectory)/src/test.runsettings -- runconfiguration.disableAppDomain=true
displayName: 'run tests'
- task: DotNetCoreCLI@2
inputs:
command: custom
custom: tool
arguments: install --tool-path . dotnet-reportgenerator-globaltool
displayName: Install ReportGenerator tool
- script: ./reportgenerator -reports:$(Agent.TempDirectory)/**/coverage.cobertura.xml -targetdir:$(Build.sourcesDirectory)/coverlet/reports -reporttypes:"Cobertura"
displayName: Create reports
- task: PublishCodeCoverageResults@1
displayName: 'Publish code coverage'
inputs:
codeCoveragetool: Cobertura
summaryFileLocation: $(Build.sourcesDirectory)/coverlet/reports/Cobertura.xml
解决方法
您可能正在寻找 -classfilters
或 -filefilters
。
https://github.com/danielpalme/ReportGenerator
我像这样使用 -classfilter
,其中 Foo.Bar.*
和 Foo.Baz.*
是我想在报告中排除的命名空间:
variables:
...
classes-to-exclude-from-coverage: "-Foo.Bar.*;-Foo.Baz.*"
...
- script: ./reportgenerator -reports:$(Agent.TempDirectory)/**/coverage.cobertura.xml -targetdir:$(Build.SourcesDirectory)/coverlet/reports -reporttypes:"HtmlInline_AzurePipelines;Cobertura;Badges" -assemblyfilters:"-xunit*;" -classfilters:'$(classes-to-exclude-from-coverage)'
displayName: Create reports