首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对依赖于其他扩展的vscode扩展运行集成测试?

如何对依赖于其他扩展的vscode扩展运行集成测试?
EN

Stack Overflow用户
提问于 2020-10-26 22:50:17
回答 3查看 542关注 0票数 3

vscode API文档包括关于如何测试扩展的页面。当您有一个没有依赖项的扩展时,这是很好的。然而,在我们的例子中,我们extensionDependencies,因为我们的扩展依赖于hbenl.vscode-test-explorer

在我们的CI服务器上,我们有一个问题,在安装这个依赖项之前,我们无法运行测试,但是vscode的测试API没有公开用于安装扩展的API。

我们可以下载我们自己的vscode副本,并使用--install-extension命令来安装这个依赖项,但这使事情变得复杂,因为现在我们正在管理API以前管理的下载。

我想探讨两种合理的可能性:

  1. 如何在激活我的扩展时禁用extensionDependencies
  2. 如何下载依赖项作为vscode-test运行的一部分?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-10-27 15:21:51

不知怎么的,我在文件里漏掉了这个。vscode-test

代码在链接中可用,所以我不会全部复制。以下是最相关的部分:

代码语言:javascript
复制
    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'
    });
票数 3
EN

Stack Overflow用户

发布于 2021-09-30 01:03:11

尝试应用Andrew的解决方案时的一些附加信息。

test-electro添加到项目中

package.json

"devDependencies":

添加"@vscode/test-electron": "^1.6.2", (选择适合您的适当版本)

查找分机ID

打开“扩展信息”页面(就像安装扩展名时一样)。当你点击齿轮时,你可以复制扩展ID (见下面)

票数 0
EN

Stack Overflow用户

发布于 2022-10-13 17:43:43

我接受了Andrew .的答案,并在此基础上构建了它。与其硬编码runTest.ts文件中的一个或多个扩展名依赖项,我还利用了package.json文件本身,以便在集成测试中自动考虑对扩展依赖项的任何更改。

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64546059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档