# 测试你的插件

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的配置。

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

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

# 加载测试配置


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

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

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


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

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

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

# 从项目中排除测试文件


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

out/test/**
1

# 使用Travis CI自动测试


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

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

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

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

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

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

sudo: false

os:
  - osx
  - linux

before_install:
  - if [ $TRAVIS_OS_NAME == "linux" ]; then
      export CXX="g++-4.9" CC="gcc-4.9" DISPLAY=:99.0;
      sh -e /etc/init.d/xvfb start;
      sleep 3;
    fi

install:
  - npm install
  - npm run vscode:prepublish

script:
  - npm test --silent
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

上述脚本可以运行在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进行测试

# 下一步