TesController概要介绍
TestController 组件是用于实现自定义测试框架和集成测试结果的。它允许开发者定义自己的测试运行器,以支持在VSCode中运行和展示测试。以下是一些使用 TestController 组件的主要场景:
自定义测试框架:如果你正在开发或使用一个非标准的测试框架,你可以使用 TestController 来集成这个框架的测试结果。
语言特定的测试:对于某些语言或框架,VSCode可能没有内置的测试支持。使用 TestController,你可以为这些语言或框架添加测试支持。
集成外部测试工具:如果你需要在VSCode中展示由外部测试工具生成的测试结果,TestController 可以用来映射这些结果到VSCode的测试UI。
测试结果可视化:通过 TestController,你可以控制测试结果如何在VSCode的测试面板中展示,包括测试的通过、失败、跳过等状态。
如何开发一款自定义的测试框架插件
要开发一款基于vscode的自定义测试框架非常简单,有三个步骤。以读取markdown中的代码,执行测试为例子来看看如何自定义测试框架插件
步骤一:解析文档中内容,并将结果添加到testcontroller的testItem对象
下面的代码中,对给定的文档内容通过正则表达式进行match,获取到markdown文件中的测试name,experssion,expected内容,并将parse出来的内容用于构建TestItem。下图图一假设是文本上的代码内容,下图图二是parse出来的Test对象内容。
function loadTestsFromDocument(testController: vscode.TestController, document: vscode.TextDocument) {
const tests = parseTests(document.getText());
for (const test of tests) {
const testItem = testController.createTestItem(test.name, test.expression + "=" + test.expected);
testController.items.add(testItem);
}
}
interface Test {
name: string;
expression: string;
expected: number;
}
function parseTests(text: string): Test[] {
const testRegex = /^(\d+ \+ \d+) = (\d+) \/\/ (.+)$/gm;
const tests: Test[] = [];
let match;
while ((match = testRegex.exec(text)) !== null) {
tests.push({
name: match[3],