测试你的插件

VS Code可以运行和调试支持VS Code API的插件。这些测试会运行在VS Code的特殊实例扩展开发环境中,这个环境有权访问全部的API。我们将这样的测试称为集成测试,因为它远远超越了单独运行在VS Code中的单元测试。本篇侧重于VS Code的集成测试,至于单元测试,你可以使用任何流行的测试框架,如Mocha或者Jasmine

Yo Code测试脚手架


yo code 生成器基础插件项目包含了一些示例测试和必要的基础设施。

!> 注意:本篇假设你已经创建了一个Typescript插件(或Javascript插件),不然先参考基础部分

打开一个插件项目目录,打开调试侧边栏选择Extension Tests配置。

launch-tests

选中配置之后,点击绿色的小角标,启动调试。VS Code会在扩展开发环境实例中加载插件,然后运行调试。测试的输出会进入调试控制台

test-output

生成的测试使用了Mocha 测试框架的测试运行器和库。

插件项目文件夹中的附带了src/test,其中有一个index.ts文件,定义了Mocha测试运行器的配置,extension.test.ts中包含着测试示例Something 1。通常来说你可以不管index.ts,不过你也可以调整Mocha的配置。

  1. ├── src
  2. └── test
  3. ├── extension.test.ts
  4. └── index.ts

你可以在test目录下创建更多的test.ts文件,它们会被自动构建(到out/test)然后运行。测试运行器只会匹配*.test.ts模式的文件。

加载测试配置


Extension Tests的配置文件在项目的.vscode\launch.json的文件中。就像Extension配置一样,通过--extensionTestsPath参数,指定编译的测试文件位置(假设是Typescript项目)。

  1. {
  2. "name": "Extension Tests",
  3. "type": "extensionHost",
  4. "request": "launch",
  5. "runtimeExecutable": "${execPath}",
  6. "args": [
  7. "--extensionDevelopmentPath=${workspaceFolder}",
  8. "--extensionTestsPath=${workspaceFolder}/out/test"
  9. ],
  10. "outFiles": [
  11. "${workspaceFolder}/out/test/**/*.js"
  12. ]
  13. }

将参数传递到扩展开发环境中


在加载配置中添加参数列表,然后测试示例就能在你指定的目录或文件中启动测试了。

  1. "args": [
  2. "file or folder name",
  3. "--extensionDevelopmentPath=${workspaceFolder}",
  4. "--extensionTestsPath=${workspaceFolder}/out/test"
  5. ]

用这个方式,你的测试就可以运行在可预测的文件结构中运行了。

从项目中排除测试文件


当你想要分享插件的时候,你可能就不需要测试文件出现在插件包里了。.vscodeignore文件可以让你在使用vsce构建工具的时候排除测试文件。默认情况下,yo code生成的项目会排除testout/test文件夹。

  1. out/test/**

使用Travis CI自动测试


你也可以用诸如Travis CI自动构建机器来自动运行测试。

为了启动自动插件测试,vscode包需要提供一个可以运行下列任务的测试命令:

  • 下载和解压VS Code
  • 在VS Code内加载插件测试任务
  • 将测试结果输出到控制台中,或在异常中退出

为了完成这项命令,打开你的package.json然后将下列代码添加到scripts中:

  1. "test": "node ./node_modules/vscode/bin/test"

你可以在顶层配置一个.travis.yml文件,就可以轻松地启用Travis CI了:

  1. sudo: false
  2. os:
  3. - osx
  4. - linux
  5. before_install:
  6. - if [ $TRAVIS_OS_NAME == "linux" ]; then
  7. export CXX="g++-4.9" CC="gcc-4.9" DISPLAY=:99.0;
  8. sh -e /etc/init.d/xvfb start;
  9. sleep 3;
  10. fi
  11. install:
  12. - npm install
  13. - npm run vscode:prepublish
  14. script:
  15. - npm test --silent

上述脚本可以运行在Linux和macOS上,值得注意的一点是为了在Linux上运行测试,你需要配置一个before_install告诉Linux在构建中启动VS Code。

下面是一些用于测试运行器的可选的环境变量:

名称 描述
CODE_VERSION 运行测试的VS Code版本(如:0.10.10)
CODE_DOWNLOAD_URL 下载VS Code的完整URL
CODE_TESTS_PATH 执行测试的位置(默认是process.cwd()/out/test or process.cwd()/test)
CODE_EXTENSIONS_PATH 加载插件的位置(默认是process.cwd())
CODE_TESTS_WORKSPACE test实例打开的工作区位置(默认是CODE_TESTS_PATH)

在Windows中使用AppVeyor测试


你也可以在Windows中用AppVeyor进行测试

下一步