我的管道构建成功,但我需要将结果发布在 .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
你试过下面的方法吗..
在第一个 pester 命令输出的路径周围添加 '',听起来很奇怪但值得一试
在发布任务之前使用路径“$(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
我的管道构建成功,但我需要在 .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
你试过下面的方法吗..
在第一个 pester 命令输出的路径周围添加 '',听起来很奇怪但值得一试
在发布任务之前使用路径“$(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