vscode API文档包括关于如何测试扩展的页面。当您有一个没有依赖项的扩展时,这是很好的。然而,在我们的例子中,我们extensionDependencies,因为我们的扩展依赖于hbenl.vscode-test-explorer。
在我们的CI服务器上,我们有一个问题,在安装这个依赖项之前,我们无法运行测试,但是vscode的测试API没有公开用于安装扩展的API。
我们可以下载我们自己的vscode副本,并使用--install-extension命令来安装这个依赖项,但这使事情变得复杂,因为现在我们正在管理API以前管理的下载。
我想探讨两种合理的可能性:
extensionDependencies?vscode-test运行的一部分?发布于 2020-10-27 15:21:51
不知怎么的,我在文件里漏掉了这个。vscode-test。
代码在链接中可用,所以我不会全部复制。以下是最相关的部分:
const vscodeExecutablePath = await downloadAndUnzipVSCode('stable');
const cliPath = resolveCliPathFromVSCodeExecutablePath(vscodeExecutablePath);
// Use cp.spawn / cp.exec for custom setup
cp.spawnSync(cliPath, ['--install-extension', '<EXTENSION-ID-OR-PATH-TO-VSIX>'], {
encoding: 'utf-8',
stdio: 'inherit'
});发布于 2021-09-30 01:03:11
尝试应用Andrew的解决方案时的一些附加信息。
将test-electro添加到项目中
在package.json中
在"devDependencies":下
添加"@vscode/test-electron": "^1.6.2", (选择适合您的适当版本)
查找分机ID
打开“扩展信息”页面(就像安装扩展名时一样)。当你点击齿轮时,你可以复制扩展ID (见下面)

发布于 2022-10-13 17:43:43
我接受了Andrew .的答案,并在此基础上构建了它。与其硬编码runTest.ts文件中的一个或多个扩展名依赖项,我还利用了package.json文件本身,以便在集成测试中自动考虑对扩展依赖项的任何更改。
import * as cp from 'child_process'
import * as path from 'path'
const packageJson = require('../../package.json')
import { downloadAndUnzipVSCode, resolveCliArgsFromVSCodeExecutablePath, runTests } from '@vscode/test-electron'
async function main() {
try {
// The folder containing the Extension Manifest package.json
// Passed to `--extensionDevelopmentPath`
const extensionDevelopmentPath = path.resolve(__dirname, '../../')
// The path to test runner
// Passed to --extensionTestsPath
const extensionTestsPath = path.resolve(__dirname, './suite/index')
const vscodeExecutablePath = await downloadAndUnzipVSCode()
const [cli, ...args] = resolveCliArgsFromVSCodeExecutablePath(vscodeExecutablePath)
if (packageJson.extensionDependencies) {
for (const extensionId of packageJson.extensionDependencies) {
cp.spawnSync(cli, [...args, '--install-extension', extensionId], {
encoding: 'utf-8',
stdio: 'inherit',
})
}
}
// Download VS Code, unzip it and run the integration test
await runTests({ vscodeExecutablePath, extensionDevelopmentPath, extensionTestsPath })
} catch (err) {
console.error('Failed to run tests')
process.exit(1)
}
}
main()https://stackoverflow.com/questions/64546059
复制相似问题