VSCode 中唯一可靠测试方式是 rust-analyzer 原生内联操作:函数旁 ▶️ 运行、? 调试,基于 cargo test --no-run 静态分析,支持断点;无稳定 Test Explorer 扩展,社区适配器已归档或残缺。

VSCode 本身不运行 Rust 测试,rust-analyzer 也不提供测试 UI;所谓“Rust Test Explorer”并不存在官方或主流稳定扩展——你看到的图标、侧边栏测试树,几乎全是误装、过时或功能残缺的插件在冒充。
为什么搜不到靠谱的 rust-test-explorer 扩展
Rust 生态没有像 Jest/Vitest 那样被广泛适配的 Test Explorer adapter。目前(2026 年中)没有任何扩展能可靠解析 cargo test 输出并生成可点击、可调试、支持嵌套 #[cfg(test)] 模块的测试树。
- 社区曾有
matklad.rust-test-adapter,但作者已归档,不兼容cargo 1.80+和新版rust-analyzer - 某些名字带 “Rust Test” 的扩展只是改了图标、加了个无效按钮,实际点击后调用
cargo test却不捕获输出,也不映射到源码行号 -
rust-analyzer自身只支持「在测试函数上右键 → Run Test」或「Debug Test」,这是唯一受控、可断点、路径正确的方案
真正可用的 Rust 测试可视化方式:rust-analyzer 原生支持
别找“Test Explorer”,直接用 rust-analyzer 提供的内联操作——它不依赖额外 adapter,所有行为都基于 cargo test --no-run 的静态分析结果。
- 确保已安装
rust-analyzer(Identifier:matklad.rust-analyzer),且工作区根下有Cargo.toml - 打开任意
mod tests { ... }或#[cfg(test)]函数,在函数名左侧会出现 ▶️ 图标(Run)和 ? 图标(Debug) - 点击 ▶️,VSCode 底部状态栏会显示
cargo test --package xxx --lib -- test_name --exact --nocapture,这就是真实执行命令 - 点击 ? 启动调试时,断点 100% 生效——因为它是通过
lldb/gdb直接 attach 到cargo test生成的二进制,不是模拟环境
想“集中管理所有测试”?只能靠 cargo test + tasks.json 封装
如果你非要一个类似 Test Explorer 的“全部列出+批量运行”界面,唯一可行路径是放弃图形化树状结构,改用终端命令聚合输出。
- 在
.vscode/tasks.json中定义一个任务,列出全部测试名:{ "label": "list all tests", "type": "shell", "command": "cargo test --no-run --lib --bins --tests --examples", "group": "build", "presentation": { "echo": true, "panel": "shared", "clear": true } } - 再定义一个运行全部测试的任务(带覆盖率可选):
{ "label": "run all tests", "type": "shell", "command": "cargo test", "group": "test" } - 按
Ctrl+Shift+P→ “Tasks: Run Task”,就能从列表里选,比手动敲命令快,也避免拼错--lib或漏掉--tests
容易被忽略的关键细节
几乎所有失败都卡在这三处:
-
cargo test必须能在终端里跑通——如果连cargo test --no-run都报错“no test targets”,说明测试模块没被正确标记或lib.rs/main.rs没导出#[cfg(test)]模块 -
rust-analyzer默认不扫描tests/目录下的集成测试(integration tests),只识别src/**/*.{rs}里的单元测试;要启用tests/,得在Cargo.toml显式声明[[test]]表项 - 调试时断点不命中?检查
launch.json是否误加了"program"字段——Rust 调试必须让code-lldb自动找到cargo test编译出的临时二进制,手动指定路径几乎必错


















