Azure Pipelines - VSTest@2 生成的 CodeCoverage 在哪里?
Azure Pipelines - Where is the CodeCoverage generated by VSTest@2?
我已经尝试了数百次,但我仍然无法找到在 VSTest 任务中生成的 codeCoverage 文件。
看下面的代码。
我只想将代码覆盖率报告发布到管道。
求助!
那个代码覆盖率文件在哪里?
或者,如果您不想浪费时间写一些答案,请给我一些链接。
非常感谢!
# 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:
- master
jobs:
- job: devbuild
pool:
name: 'Self Hosted VS2017'
variables:
solution: '**/*.sln'
steps:
- task: NuGetToolInstaller@0
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:Configuration=Debug /p:Platform="Any CPU" /p:OutDir=".\output\dev"'
clean: true
- task: VisualStudioTestPlatformInstaller@1
inputs:
packageFeedSelector: 'nugetOrg'
versionSelector: 'latestPreRelease'
- task: VSTest@2
inputs:
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\dev\*.Tests.dll
searchFolder: '$(System.DefaultWorkingDirectory)'
****************************************************************************
************THIS GUY =>****************************************************
codeCoverageEnabled: true
**********************<=****************************************************
****************************************************************************
distributionBatchType: 'basedOnAssembly'
dontDistribute: false
publishRunAttachments: true
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: 'cobertura'
summaryFileLocation: '**/coverage.xml'
reportDirectory: '**/coveragereport'
failIfCoverageEmpty: true
设置system.debug变量为true,然后queue build,可以找到coverage文件的全路径(搜索日志中的覆盖率)
默认情况下,覆盖率文件的名称是xx.coverage。
这是我必须做的事情来解决 Azure 对 vstest 结果所做的 "nice" 处理。
首先,运行 vstest.console,这样 azure 就不会尝试自行发布测试结果,让您可以控制正在发生的事情。
然后,使用 powershell 将 *.coverage 重命名为已知文件。
这是我获得 .coverage 路径的唯一方法,以便将我的覆盖范围导出到管道中(我的结果来自 vstest 运行ning c++ 和 c#,这是天蓝色的处理不好)。
谢谢。
尝试添加resultsFolder参数来控制文件位置
# Ejecucion de los Test
- task: VSTest@2
displayName: 'Ejecucion de los Test'
inputs:
testSelector: 'testAssemblies' # Options: testAssemblies, testPlan, testRun
testAssemblyVer2: | # Required when testSelector == TestAssemblies
**\*.Test.dll
searchFolder: '$(Build.SourcesDirectory)\Test'
vsTestVersion: '15.0'
platform: 'x86' # Optional
codeCoverageEnabled: true
resultsFolder: '$(build.ArtifactStagingDirectory)\Test\Results'
这对我有用。我不得不告诉 vstest 以 Cobertura 格式输出,然后手动发布覆盖率结果:
- task: VSTest@2
inputs:
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\*Tests.dll
!**\*TestAdapter.dll
!**\obj\**
searchFolder: '$(System.DefaultWorkingDirectory)'
resultsFolder: '$(build.ArtifactStagingDirectory)/Test/Results'
otherConsoleOptions: '/collect:"Code Coverage;Format=Cobertura"' # <<<< this is the important bit
codeCoverageEnabled: True
# vv Then add publish coverage manually vv
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: 'Cobertura'
summaryFileLocation: '$(build.ArtifactStagingDirectory)/Test/Results/**/*.xml'
然后我在 DevOps 的覆盖选项卡中得到了很好的 HTML 输出
我已经尝试了数百次,但我仍然无法找到在 VSTest 任务中生成的 codeCoverage 文件。
看下面的代码。
我只想将代码覆盖率报告发布到管道。
求助!
那个代码覆盖率文件在哪里?
或者,如果您不想浪费时间写一些答案,请给我一些链接。
非常感谢!
# 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:
- master
jobs:
- job: devbuild
pool:
name: 'Self Hosted VS2017'
variables:
solution: '**/*.sln'
steps:
- task: NuGetToolInstaller@0
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:Configuration=Debug /p:Platform="Any CPU" /p:OutDir=".\output\dev"'
clean: true
- task: VisualStudioTestPlatformInstaller@1
inputs:
packageFeedSelector: 'nugetOrg'
versionSelector: 'latestPreRelease'
- task: VSTest@2
inputs:
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\dev\*.Tests.dll
searchFolder: '$(System.DefaultWorkingDirectory)'
****************************************************************************
************THIS GUY =>****************************************************
codeCoverageEnabled: true
**********************<=****************************************************
****************************************************************************
distributionBatchType: 'basedOnAssembly'
dontDistribute: false
publishRunAttachments: true
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: 'cobertura'
summaryFileLocation: '**/coverage.xml'
reportDirectory: '**/coveragereport'
failIfCoverageEmpty: true
设置system.debug变量为true,然后queue build,可以找到coverage文件的全路径(搜索日志中的覆盖率)
默认情况下,覆盖率文件的名称是xx.coverage。
这是我必须做的事情来解决 Azure 对 vstest 结果所做的 "nice" 处理。
首先,运行 vstest.console,这样 azure 就不会尝试自行发布测试结果,让您可以控制正在发生的事情。
然后,使用 powershell 将 *.coverage 重命名为已知文件。
这是我获得 .coverage 路径的唯一方法,以便将我的覆盖范围导出到管道中(我的结果来自 vstest 运行ning c++ 和 c#,这是天蓝色的处理不好)。
谢谢。
尝试添加resultsFolder参数来控制文件位置
# Ejecucion de los Test
- task: VSTest@2
displayName: 'Ejecucion de los Test'
inputs:
testSelector: 'testAssemblies' # Options: testAssemblies, testPlan, testRun
testAssemblyVer2: | # Required when testSelector == TestAssemblies
**\*.Test.dll
searchFolder: '$(Build.SourcesDirectory)\Test'
vsTestVersion: '15.0'
platform: 'x86' # Optional
codeCoverageEnabled: true
resultsFolder: '$(build.ArtifactStagingDirectory)\Test\Results'
这对我有用。我不得不告诉 vstest 以 Cobertura 格式输出,然后手动发布覆盖率结果:
- task: VSTest@2
inputs:
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\*Tests.dll
!**\*TestAdapter.dll
!**\obj\**
searchFolder: '$(System.DefaultWorkingDirectory)'
resultsFolder: '$(build.ArtifactStagingDirectory)/Test/Results'
otherConsoleOptions: '/collect:"Code Coverage;Format=Cobertura"' # <<<< this is the important bit
codeCoverageEnabled: True
# vv Then add publish coverage manually vv
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: 'Cobertura'
summaryFileLocation: '$(build.ArtifactStagingDirectory)/Test/Results/**/*.xml'
然后我在 DevOps 的覆盖选项卡中得到了很好的 HTML 输出