首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cobertura -被dotnetcore CLI测试命令忽略的Coverlet.runsettings.xml值

Cobertura -被dotnetcore CLI测试命令忽略的Coverlet.runsettings.xml值
EN

Stack Overflow用户
提问于 2022-05-09 09:25:41
回答 1查看 640关注 0票数 1

我试图在Azure DevOps构建管道中为我的解决方案之一生成代码覆盖率。虽然我的测试结果与Cobertura代码覆盖报告一起在构建完成时出现,但我想从代码覆盖率报告中排除许多文件和名称空间,因为它们不是可测试的代码单元(例如,模型或数据库迁移)。

我知道我可以使用coverlet.runsettings.xml文件来进行命名空间排除,但这似乎不起作用。

我的运行设置文件是在一个正在运行的测试项目中安装的,设置如下:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<RunSettings>
    <DataCollectionRunSettings>
        <DataCollectors>
            <DataCollector friendlyName="XPlat code coverage">
                <Configuration>
                    <Exclude>[MyDatabase.Migrations.*]*,[*]MyDatabase.Migrations*</Exclude>
                </Configuration>
            </DataCollector>
        </DataCollectors>
    </DataCollectionRunSettings>
</RunSettings>

我试图排除位于MyDatabase.Migrations命名空间下的所有文件,但是上面使用的语法似乎没有任何效果,而且我仍然可以在Devops的最终代码覆盖率报告中看到这个名称空间下的文件。

我的管道设置如下:

代码语言:javascript
复制
steps:
- task: DotNetCoreCLI@2
  displayName: 'Build'
  inputs:
    command: 'build'
    projects: '$(solution)'
    arguments: '--configuration $(buildConfiguration)'

- task: DotNetCoreCLI@2
  displayName: 'Tests'
  inputs:
    command: 'test'
    projects: |
      **\MyDatabase.Tests
      **\MySearch.Common.Tests
      **\MySearchService.Tests
      **\MyConfiguration.Tests
    arguments: '--configuration $(buildConfiguration) --collect:"XPlat Code Coverage"'
    publishTestResults: true

# ReportGenerator extension to combine code coverage outputs into one
- task: reportgenerator@5
  inputs:
    reports: '$(Agent.WorkFolder)/**/coverage.cobertura.xml'
    targetdir: '$(Build.SourcesDirectory)/CoverageResults'

- task: PublishCodeCoverageResults@1
  displayName: 'Publish code coverage report'
  inputs:
    codeCoverageTool: 'Cobertura'
    summaryFileLocation: '$(Build.SourcesDirectory)/CoverageResults/Cobertura.xml'
    reportDirectory: '$(Build.SourcesDirectory)/CoverageResults'

我知道我可以使用ExcludeFromCodeCoverage标记,但是对于自动生成的东西,比如迁移,这可能会变得非常混乱,每次生成新的标记时,都需要对它们进行修改。

我希望在生成的报告中完全省略迁移文件夹。

如果能在这个问题上提供任何帮助,我们将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2022-05-10 10:25:10

VSTestIntegration文档表明您需要将自定义运行设置文件包含为agrument:

可以使用给定的命令行选项轻松地提供这个运行设置文件:dotnet test --collect:"XPlat Code Coverage" --settings coverlet.runsettings

尝试以下几点:

arguments: '--configuration $(buildConfiguration) --collect:"XPlat Code Coverage" --settings [path to tests project]\coverlet.runsettings.xml'

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72169701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档