VSCode扩展测试:在测试中使用"VSCode.executeDefinitionProvider"



背景

我正在尝试自动测试我的VSCode扩展。该扩展名适用于python文件,并在其中使用vscode.executeDefinitionProvidervscode.executeDocumentSymbolProvider

问题

vscode.executeDefinitionProvider总是返回[]vscode.executeDocumentSymbolProvider总是返回undefined

备注

当在扩展的调试会话(没有测试会话)中运行相同的代码时,命令可以完美地工作。

我确保扩展在测试期间可用,甚至用手动激活它们

let ext = vscode.extensions.getExtension("ms-python.python");
assert.notStrictEqual (ext, undefined);
await ext?.activate ();
ext = vscode.extensions.getExtension("ms-python.vscode-pylance");
assert.notStrictEqual (ext, undefined);
await ext?.activate ();

问题

如何在自动化测试中使命令成功。

编辑:解决方法

显然,VSCode需要时间来真正激活扩展。我可以把await sleep (10000);放在index.ts::run ()中的return new Promise((c, e) => {之前。

虽然这是有效的,但这是一个非常不稳定的解决方法。有没有办法让代码等待整个环境完全加载?

最终,没有什么能真正稳定地对我起作用,所以我采用了以下(非常好的工作)解决方案。

我的自动测试是在生产环境中运行的,就像任何其他扩展一样

  • package.json中,我创建了一个新的命令_test
  • 该命令将运行CCD_ 12

Extension<T>::activate(): Thenable<T>

返回:Thenable<T>-当激活此扩展时将解析的承诺。

await ext?.activate();

最新更新