本文介绍了如何生成vscode TypeScrip扩展覆盖报告的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
对于使用TypeScrip生成的VSCode扩展,似乎无法使用coveralls
生成覆盖率报告。
目前,我正在将测试用例添加到我们的项目https://github.com/PicGo/vs-picgo/pull/42,我已经找到了几种报告覆盖率的方法,但没有一种方法适合我。
使用自定义TestRunner
The official documentation很少提到定制测试运行器,但我找到了一个帖子here。当我使用F5
启动Extension Test
时,它可以工作,但当我在控制台中运行npm run test
时,它不工作(根本没有覆盖率输出)。
我也试着了解博文中的自定义运行器(源代码),但我发现我无能为力,因为我不知道它为什么会起作用。
使用nyc
nyc
与摩卡是非常强大的,但我们不能利用它。当我运行nyc ./node_modules/vscode/bin/test
时,我将获得0%的覆盖率:
我搜索了nyc
的问题页,关于TS项目存在很多相同的0%覆盖率问题,但没有一个与我们的环境相同。主要区别在于他们使用mocha
进行测试,而不是像VSCode的./node_modules/vscode/bin/test
脚本那样,它将创建一个新的进程来运行测试js文件。我不知道该怎么处理这件事。
推荐答案
添加自定义测试运行器
有关详细信息,请参阅this post,您只需将test runner code复制到项目的test/index.ts
文件。
演示Azure管道配置
variables:
system.debug: true
jobs:
- job: Windows
pool:
name: Hosted VS2017
demands: npm
steps:
- task: NodeTool@0
displayName: 'Use Node 12.3.1'
inputs:
versionSpec: 12.3.1
- task: Npm@1
displayName: 'Install dependencies'
inputs:
verbose: false
- task: Npm@1
displayName: 'Compile sources and run tests'
inputs:
command: custom
verbose: false
customCommand: 'test'
# https://stackoverflow.com/questions/45602358/lcov-info-has-absolute-path-for-sf
- script: 'sed -i -- 's/..\..\//g' coverage/lcov.info && npm run coveralls'
displayName: 'Publish code coverage'
env:
COVERALLS_SERVICE_NAME: $(COVERALLS_SERVICE_NAME)
COVERALLS_REPO_TOKEN: $(COVERALLS_REPO_TOKEN)
- script: 'npm install -g vsce && vsce package'
displayName: 'Build artifact'
- task: CopyFiles@2
inputs:
contents: '*.vsix'
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: vs-picgo-dev-build
trigger:
branches:
include:
- '*' # must quote since "*" is a YAML reserved character; we want a string
pr:
- dev*
请注意,您必须使用sed
删除lcov.info
中SF
路径的....
前缀:
之前:
SF:....srcvs-picgoindex.ts
之后:
SF:srcvs-picgoindex.ts
演示项目:https://github.com/PicGo/vs-picgo
这篇关于如何生成vscode TypeScrip扩展覆盖报告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!