我已经有一段时间没有在 Visual Studio Code 中接触 Rust 了。我正在研究 Exercism 网站上的 Rust 练习。每个练习在 src 下都有一个 lib.rs,在 tests 下有一个 [exercise name].rs。
我记得我以前使用 CodeLens 调试链接调试单个集成测试时能够在终端窗口中看到 println 语句的输出。目前我不能。如果我使用 CodeLens 运行链接进行测试,lib.rs 函数中 println 的输出将显示在终端中。
当我调试集成测试时,我是否应该能够在终端窗口中看到 println 输出?如果可以,有人可以提供关于如何识别或记录问题的建议吗?
我正在使用的扩展是:CodeLLDB、rust-analyzer 和 WSL。
我卸载了每个扩展,删除了 Code 目录,重新安装了 Code,然后再次加载了每个扩展。
默认情况下,Rust 测试会静默输出。Rust-analyzer 默认添加,
--show-output
这意味着测试将在所有测试完成后打印所有输出。如果希望测试在运行时打印,则需要传递--nocapture
。Rust-analyzer 曾经使用,但几个月前--nocapture
已经更改。解决此问题的最简单方法是将
rust-analyzer.runnables.extraTestBinaryArgs
VS Code 设置更改为使用--nocapture
而不是--show-output
,这应该会给你带来你习惯的旧行为。这适用于“运行测试”和“调试”按钮,这可能不是理想的选择,但我找不到向每个按钮传递不同参数的方法。另一种方法是使用 launch.json 文件。缺点是这每次只会影响一个测试命令,并且不适用于 CodeLens 按钮。您可以通过在命令面板中运行“LLDB:从 Cargo.toml 生成启动配置”来生成大部分文件。然后,找到名为“Debug integration test 'test-name'”的条目并添加
"--nocapture"
到顶级args
数组(不是cargo.args
数组;它们仅用于编译)。将此文件保存为 VS Code 工作区根目录中的“.vscode/launch.json”。然后您可以在“运行和调试”选项卡中使用此配置。