You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust执行cargo test --verbose时测试无打印输出问题

问题根因

Rust 内置测试框架默认会捕获测试运行期间所有写入标准输出、标准错误的内容,仅当对应测试用例执行失败时,才会把捕获到的打印内容输出到控制台。
你之前使用的-v/--verbose/-vv参数仅用于控制 Cargo 工具本身的日志详细程度,只会展示更细的构建、依赖解析、测试进程启动信息,和测试框架的输出捕获逻辑完全无关,自然看不到你写的打印内容。

解决方式
  • 单次运行时放开输出捕获:执行测试命令时追加-- --nocapture参数即可。注意开头的两个横杠是 Cargo 用来区分「Cargo 自身接收的参数」和「透传给测试二进制的参数」的分隔符,不能省略。
    对应你的测试用例,直接执行如下命令就能看到预期的"BAR"、"BAZ"输出:
    cargo test foo -- --nocapture
    
  • 永久配置默认不捕获输出:在项目根目录下新建(或修改已有的).cargo/config.toml文件,添加如下配置:
    [test]
    nocapture = true
    
    配置完成后后续直接执行cargo test就会默认展示所有测试的打印内容,不需要每次手动加参数。
之前参数不生效的说明

你之前尝试的cargo --verbose test -vv写法里,--verbose是传给cargo根命令的参数,-vv因为没有放在--分隔符后面,不会被透传给测试运行器,只会被cargo识别为自身的verbose参数,因此完全不会改变测试输出的捕获行为。

内容的提问来源于stack exchange,提问作者Evan Carroll

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:57:08