Rust执行cargo test --verbose时测试无打印输出问题
问题根因
Rust 内置测试框架默认会捕获测试运行期间所有写入标准输出、标准错误的内容,仅当对应测试用例执行失败时,才会把捕获到的打印内容输出到控制台。
你之前使用的-v/--verbose/-vv参数仅用于控制 Cargo 工具本身的日志详细程度,只会展示更细的构建、依赖解析、测试进程启动信息,和测试框架的输出捕获逻辑完全无关,自然看不到你写的打印内容。
解决方式
- 单次运行时放开输出捕获:执行测试命令时追加
-- --nocapture参数即可。注意开头的两个横杠是 Cargo 用来区分「Cargo 自身接收的参数」和「透传给测试二进制的参数」的分隔符,不能省略。
对应你的测试用例,直接执行如下命令就能看到预期的"BAR"、"BAZ"输出:cargo test foo -- --nocapture - 永久配置默认不捕获输出:在项目根目录下新建(或修改已有的)
.cargo/config.toml文件,添加如下配置:
配置完成后后续直接执行[test] nocapture = truecargo test就会默认展示所有测试的打印内容,不需要每次手动加参数。
之前参数不生效的说明
你之前尝试的cargo --verbose test -vv写法里,--verbose是传给cargo根命令的参数,-vv因为没有放在--分隔符后面,不会被透传给测试运行器,只会被cargo识别为自身的verbose参数,因此完全不会改变测试输出的捕获行为。
内容的提问来源于stack exchange,提问作者Evan Carroll
相关产品推荐
相关产品推荐

