我的管道构建成功,但我需要将结果发布在 .xml 文件中,该文件在本地发生但不在 DevOps 中发生

My pipeline build is successful but I needed to publish the results in .xml file which is happening locally but not in DevOps

我的管道构建成功,但我需要在 .xml 文件中发布结果,该文件在本地发生但在 DevOps 中不发生 - 它说找不到 TestPester 文件。

当我在本地使用这些命令时 - 所有测试都通过并自动创建 TestPester 文件。

命令
Invoke-Pester -Script Get-Planet.Tests.ps1 -OutputFile Test-Pester.XML -OutputFormat NUnitXML

流水线代码:

trigger:
 - main

pool:
  vmImage: windows-latest

steps:
- task: PowerShell@2
  inputs:
    filePath: 'Get-Planet.Tests.ps1'
    workingDirectory: '$(System.DefaultWorkingDirectory)'
    script: |
      Install-Module -Name Pester -Force -SkipPublisherCheck

      Import-Module Pester

      Invoke-Pester -Script $(System.DefaultWorkingDirectory)\Get-Planet.Tests.ps1 -OutputFile $(System.DefaultWorkingDirectory)\TestPester.XML -OutputFormat NUnitXML     
      Invoke-Pester -CodeCoverage '$(System.DefaultWorkingDirectory)\Get-Planet.Tests.ps1' -CodeCoverageOutputFile '$(System.DefaultWorkingDirectory)\Pester-Coverage.xml' -CodeCoverageOutputFileFormat JaCoCo    


        
  
- task: PublishTestResults@2
  inputs:
      testResultsFormat: 'NUnit'
      testResultsFiles: '$(System.DefaultWorkingDirectory)\TestPester.XML'
      mergeTestResults: true


- task: PublishCodeCoverageResults@1
  inputs:
    codeCoverageTool: 'JaCoCo'
    summaryFileLocation: '**/Pester-Coverage.xml'
    pathToSources: '$(System.DefaultWorkingDirectory)'

日志文件

2021-04-07T09:15:46.0910514Z ##[section]Starting: PublishTestResults
2021-04-07T09:15:46.1265107Z ==============================================================================
2021-04-07T09:15:46.1265611Z Task         : Publish Test Results
2021-04-07T09:15:46.1265893Z Description  : Publish test results to Azure Pipelines
2021-04-07T09:15:46.1266118Z Version      : 2.180.0
2021-04-07T09:15:46.1266332Z Author       : Microsoft Corporation
2021-04-07T09:15:46.1266847Z Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/test/publish-test-results
2021-04-07T09:15:46.1267241Z ==============================================================================
2021-04-07T09:15:47.1966443Z [command]"C:\Program Files\dotnet\dotnet.exe" --version
2021-04-07T09:15:48.7472296Z 5.0.201
2021-04-07T09:15:48.7517977Z ##[warning]No test result files matching D:\a\s\TestPester.XML were found.
2021-04-07T09:15:48.8193796Z ##[section]Finishing: PublishTestResults

Powershell 日志:

正在生成脚本。 格式化命令:. 'D:\a\s\Get-Planet.Tests.ps1' ========================== 启动命令输出 ===================== ====== "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ".'D:\a_tempdee7bed-1e4b-4a16-8e09-674f5ac01d78.ps1'"

开始发现 1 个文件。 发现在 1.06 秒内完成。 [+] D:\a\s\Get-Planet.Tests.ps1 5.22s (1.21s|3.05s) 测试在 5.36 秒内完成 测试通过:6,失败:0,跳过:0 NotRun:0 整理:PowerShell

你试过下面的方法吗..

  1. 在第一个 pester 命令输出的路径周围添加 '',听起来很奇怪但值得一试

  2. 在发布任务之前使用路径“$(System.DefaultWorkingDirectory)\TestPester.XML”添加测试路径命令,以确保正在创建文件

我发现大多数时候是文件没有创建或者无法正确解析路径。

我添加了 Get-Planet.Tests.ps1 我的测试文件而不是 PowerShell 文件。这就是我出错的原因。

我改成:

- task: PowerShell@2
    inputs:
    targetType: 'inline'
    script: |
      Install-Module -Name Pester -Force
  
  
      Invoke-Pester -CodeCoverage $(System.DefaultWorkingDirectory)\Get-Planet.psm1 `
                -CodeCoverageOutputFile $(System.DefaultWorkingDirectory)\Pester-Coverage.xml `
                -CodeCoverageOutputFileFormat JaCoCo `
                -OutputFile $(System.DefaultWorkingDirectory)\test-results.xml `
                -OutputFormat NUnitXml