LeetCode Go Test Generator
一个便捷的 VSCode 插件,用于快速生成 LeetCode Go 语言测试用例。只需从 LeetCode 复制粘贴测试用例,插件会自动生成格式化的 Go 测试代码。
✨ 主要功能
- 🎯 智能识别测试函数:自动识别当前测试函数,无需手动指定
- 📝 分步输入:先输入所有测试用例的参数,再输入所有输出,交互清晰
- 🔄 自动格式转换:自动将 LeetCode 数组格式转换为 Go 格式
- 一维数组:
[1,2,3] → []int{1,2,3}
- 二维数组:
[[1,2],[3,4]] → [][]int{{1,2},{3,4}}
- 三维数组:
[[[1,2]]] → [][][]int{{{1,2}}}
- 字符串数组:
["a","b"] → []string{"a","b"}
- 🔢 智能命名:测试用例名称自动递增,基于已有测试用例数量
- 📍 精确定位:在用户右键位置插入代码,支持任意位置
🚀 快速开始
安装
- 克隆或下载此项目
- 在项目根目录运行:
npm install
npm run compile
- 按
F5 启动调试,或打包为 .vsix 文件安装
使用方法
- 在 Go 测试文件中,找到要添加测试用例的位置(可以是
TODO 注释处,或任意位置)
- 右键点击,选择 "生成 LeetCode 测试用例" 命令
- 第一步:在弹出的输入框中输入所有测试用例的输入参数(每行一个用例)
- 第二步:在弹出的输入框中输入所有测试用例的输出(每行一个输出,与输入顺序对应)
📖 使用示例
示例 1:基本用法
假设有以下测试函数:
func Test_sumAndMultiply(t *testing.T) {
type args struct {
s string
queries [][]int
}
tests := []struct {
name string
args args
want []int
}{
// TODO: Add test cases.
}
// ...
}
第一步输入(输入参数):
s = "10203004", queries = [[0,7],[1,3],[4,6]]
s = "abc", queries = [[0,1]]
第二步输入(输出):
[12340, 4, 9]
[1, 2]
生成的代码:
{
name: "1",
args: args{
s: "10203004",
queries: [][]int{{0, 7}, {1, 3}, {4, 6}},
},
want: []int{12340, 4, 9},
},
{
name: "2",
args: args{
s: "abc",
queries: [][]int{{0, 1}},
},
want: []int{1, 2},
},
示例 2:不带参数名的格式
第一步输入:
"10203004",[[0,7],[1,3],[4,6]]
"abc",[[0,1]]
第二步输入:
[12340, 4, 9]
[1, 2]
插件会自动按顺序将值赋给函数参数。
示例 3:一维数组
第一步输入:
nums = [1,2,3], goal = 4
nums = [4,5,6], goal = 7
第二步输入:
2
3
生成的代码:
{
name: "1",
args: args{
nums: []int{1, 2, 3},
goal: 4,
},
want: 2,
},
{
name: "2",
args: args{
nums: []int{4, 5, 6},
goal: 7,
},
want: 3,
},
📋 支持的输入格式
输入参数格式
插件支持两种输入格式,通过是否包含 = 号自动识别:
格式 1:带参数名(推荐)
s = "10203004", queries = [[0,7],[1,3],[4,6]]
nums = [1,2,3], goal = 4
格式 2:按顺序的值
"10203004",[[0,7],[1,3],[4,6]]
[1,2,3], 4
输出格式
输出直接输入值即可,支持数组格式:
[12340, 4, 9]
2
"result"
🎯 核心特性
1. 自动识别测试函数
插件会自动从当前光标位置向上查找最近的测试函数(Test_xxx),无需手动指定。
2. 智能数组格式转换
- 一维数组:
[1,2,3] → []int{1,2,3}
- 二维数组:
[[1,2],[3,4]] → [][]int{{1,2},{3,4}}
- 三维数组:
[[[1,2]]] → [][][]int{{{1,2}}}
- 字符串数组:
["a","b"] → []string{"a","b"}
- 自动类型检测:根据内容自动判断是
int 还是 string
3. 测试用例名称自动递增
- 如果当前函数已有测试用例(name: "1", "2", "3"),新生成的用例会从 "4" 开始
- 如果没有已有用例,从 "1" 开始
4. 精确定位插入
- 在用户右键位置插入代码
- 如果右键在
TODO 注释行,会自动删除 TODO 并插入代码
- 支持在任意位置插入
🛠️ 开发
# 安装依赖
npm install
# 编译
npm run compile
# 监听模式(自动编译)
npm run watch
调试
- 按
F5 启动调试
- 会打开一个新的 VSCode 窗口(Extension Development Host)
- 在新窗口中打开你的 Go 测试文件进行测试
打包
# 安装 vsce(如果还没有)
npm install -g vsce
# 打包为 .vsix 文件
vsce package
# 安装打包的插件
code --install-extension leetcode-go-test-generator-0.0.1.vsix
⚙️ 技术细节
- 语言:TypeScript
- VSCode API:使用 VSCode Extension API
- 解析算法:智能解析嵌套数组、字符串、参数匹配
📝 注意事项
- 测试函数格式:确保测试函数符合标准 Go 测试模板,包含
args struct 定义
- 参数顺序:使用不带参数名的格式时,确保输入顺序与函数参数顺序一致
- 数组格式:LeetCode 的数组格式会自动转换,无需手动修改
- 多行输入:每个测试用例占一行,支持一次输入多个用例
🤝 贡献
欢迎提交 Issue 和 Pull Request!
📄 许可证
MIT License