我已经找到了一些特定于版本的questions on SO,用于 Jest 单元测试,并将其结果发布在VSTS构建测试结果标签中。但是找不到适当的解决方案。
最佳答案
经过一些研究,我发现Jest testResultsProcessor property is deprecated是一种不同的方法,b / c。我正在使用 jest-junit 软件包来生成测试报告(该软件包比jest-trx-results-processor fwiw更为新近开发):
package.json
例如
yarn add -D jest-junit
或npm add --save-dev jest-junit
我使用了the Yarn task,但是您也可以替代使用the npm task。我使用了以下任务参数:
jest --ci --reporters=jest-junit --reporters=default --coverage --coverageReporters=cobertura --coverageReporters=html
因为我也想要代码覆盖率。要跳过代码覆盖率报告,请使用以下(npm或yarn)任务参数:
jest --ci --reporters=jest-junit --reporters=default
注意
--reporters=default
是否存在,我想在构建日志中使用默认的stdout。 由于我们使用默认路径,因此测试结果文件将被写入
~/junit.xml
如果您正在运行代码覆盖率,则最好也添加一个任务来发布代码覆盖率结果:
如果您使用的是YAML管道,则这里是等效的YAML(请注意,我们使用的是yarn任务而不是npm任务,但是可以更改):
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-task.Yarn@2
displayName: 'Install dependencies'
inputs:
Arguments: install --no-progress
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-task.Yarn@2
displayName: 'Unit tests'
inputs:
Arguments: 'test --ci --reporters=jest-junit --reporters=default --coverage --coverageReporters=cobertura'
continueOnError: true # Test failures should be published before failing the build
- task: PublishTestResults@2
displayName: 'Publish Jest Unit Test Results'
inputs:
testResultsFiles: junit.xml
mergeTestResults: true
testRunTitle: 'Jest Unit Tests'
failTaskOnFailedTests: true
- task: PublishCodeCoverageResults@1
displayName: 'Publish code coverage from Jest tests'
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/coverage/cobertura-coverage.xml'
# reportDirectory: '$(System.DefaultWorkingDirectory)/coverage'
failIfCoverageEmpty: true
关于jestjs - 如何在VSTS测试中发布Jest单元测试结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51720050/