有哪些方法可以运行 Rust 货物测试并使测试运行程序将任何日志输出显示到控制台 stdout 或 stderr?

joe*_*son 7 testing logging rust rust-cargo

我学过:

  • cargo test -- --nocapture它告诉 Cargo 显示输出而不是隐藏输出;我感兴趣的是看到成功测试的输出,而不仅仅是失败的测试。
  • env_loggercrate 允许使用环境变量来设置日志级别。

我正在寻找任何类似的方法,最好是任何官方参考指南,以展示实现这一目标的好方法。

joe*_*son 2

这是一种对我有用的解决方案。

Cargo.toml 依赖项:

env_logger = "*"
Run Code Online (Sandbox Code Playgroud)

演示源码:

use log::*;

pub fn foo() -> bool {
    info!("hello world");
    true
}

#[cfg(test)]
mod tests {
    use super::*;
    use env_logger;
    #[test]
    fn test_foo() {
        env_logger::init();
        assert!(foo());
    }
}
Run Code Online (Sandbox Code Playgroud)

命令:

RUST_LOG=info cargo test -- --nocapture   
Run Code Online (Sandbox Code Playgroud)