zoukankan      html  css  js  c++  java
  • .NET Core项目自动化测试和代码覆盖率审查

    这篇文章给大家分享一下,如何配置.NET Core项目自动化测试和代码覆盖率审查。

    基本知识,请参考这里: https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-dotnet-test

    环境准备:

    演示项目基于Visual Studio Code,并且安装如下插件

    1. Coverage Gutters
    2. Coverlet

    我有如下的项目结构

    本地开发环境运行测试并查看代码覆盖率

    运行 dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=./lcov.info

    点击状态栏中的Watch 按钮

    这样就能快速进入源代码中查看哪些代码覆盖,哪些代码没有覆盖。

    下图红色标出的代码是没有覆盖到的。

     

    配置CI 系统自动测试和计算覆盖率

    我这里用 的是Azure DevOps,希望每次pipeline运行时能了解测试成功率和代码覆盖率。

    你可以像下面这样定义Pipeline

     

    # ASP.NET

    # Build and test ASP.NET projects.

    # Add steps that publish symbols, save build artifacts, deploy, and more:

    # https://docs.microsoft.com/azure/devops/pipelines/apps/aspnet/build-aspnet-4

     

    trigger:

    - main

     

    pool:

    vmImage: 'windows-latest'

     

    variables:

    solution: '**/*.sln'

    buildPlatform: 'Any CPU'

    buildConfiguration: 'Release'

     

    steps:

    - task: NuGetToolInstaller@1

     

    - task: NuGetCommand@2

    inputs:

    restoreSolution: '$(solution)'

     

    - task: VSBuild@1

    inputs:

    solution: '$(solution)'

    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'

    platform: '$(buildPlatform)'

    configuration: '$(buildConfiguration)'

     

    - task: DotNetCoreCLI@2

    inputs:

    command: 'test'

    arguments: '--collect "XPlat Code Coverage"'

     

    - task: PublishCodeCoverageResults@1

    inputs:

    codeCoverageTool: 'Cobertura'

    summaryFileLocation: '$(Agent.TempDirectory)*coverage.cobertura.xml'

     

    成功运行后,会看到下面这样的详细测试报告

     

    还有代码覆盖率审查报告

     

    通过在Azure DevOps安装一个插件("Build Quality Checks"),可以根据代码覆盖率的数值进行代码质量审查。例如下图所示,就是我们规定必须代码覆盖率到达60%以上才能编译通过。

     

  • 相关阅读:
    HDU 5818 Joint Stacks
    HDU 5816 Hearthstone
    HDU 5812 Distance
    HDU 5807 Keep In Touch
    HDU 5798 Stabilization
    HDU 5543 Pick The Sticks
    Light OJ 1393 Crazy Calendar (尼姆博弈)
    NEFU 2016省赛演练一 I题 (模拟题)
    NEFU 2016省赛演练一 F题 (高精度加法)
    NEFU 2016省赛演练一 B题(递推)
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/14397983.html
Copyright © 2011-2022 走看看