在 Azure DevOps 上运行 Jasmine 测试作为自动构建过程的一部分

Ale*_*. A 1 jasmine azure-devops

鉴于构建包含一个 Angular 应用程序,其中有 Jasmine 测试。我该怎么做才能将这些测试结果作为构建的一部分发布,更好的是,在成功执行所有 Jasmine 测试后确定构建结果?

umi*_*der 7

您可以通过以下脚本和任务执行此操作:

  1. ng test
  2. 使用PublishTestResults任务发布测试结果
  3. 使用PublishCodeCoverageResults任务发布代码覆盖率结果

Azure Pipelines YAML文件中,这可能如下所示:

# perform unit-tests and publish test and code coverage results
- script: |
    npx ng test --watch=false --karmaConfig karma.conf.ci.js --code-coverage
  displayName: 'perform unit tests'    

- task: PublishTestResults@2
  condition: succeededOrFailed()
  inputs:
    testResultsFormat: 'JUnit'
    testResultsFiles: '**/TESTS-*.xml'
  displayName: 'publish unit test results'

- task: PublishCodeCoverageResults@1
  displayName: 'publish code coverage report'
  condition: succeededOrFailed()
  inputs:
    codeCoverageTool: Cobertura
    summaryFileLocation: '$(Build.SourcesDirectory)/coverage/cobertura-coverage.xml'
    failIfCoverageEmpty: true     
Run Code Online (Sandbox Code Playgroud)


Mic*_*rek 7

@uminder 的 Azure 配置是正确的。

我会添加两件事,以便答案完整。这是创建 junit 报告和覆盖率文件所必需的 - 以便您稍后可以在 azure pipeline 中引用它们。

  1. junit 和 karma.config.js 的覆盖范围(如果不存在)报告器
 config.set({
      plugins: [
        ...
        require('karma-coverage'),
        require('karma-junit-reporter')
      ]
Run Code Online (Sandbox Code Playgroud)

当然你需要安装它

npm install -D karma-junit-reporter

  1. 我还将在coverageReporter中添加一个cobertura到karma.config.js

     coverageReporter:  { 
     ....
     reporters: [
         ...
         { type: 'cobertura' } // TO BE ADDED        
     ]
    
    Run Code Online (Sandbox Code Playgroud)

    }