是否可以使用 Rust 的日志信息进行测试?

时间:2021-04-14 07:50:41

标签: rust

我有一些使用 Rust 日志箱中的 info! 的测试。我试过了:

RUST_LOG=all cargo test -- --nocapture my_tests

但日志根本不会出来。

不过我没有初始化记录器,因为 puttin env_logger::init(); 不起作用:

failed to resolve: use of undeclared crate or module `env_logger`

1 个答案:

答案 0 :(得分:1)

您可以尝试使用几种解决方法之一。

首先是使用 println 当 crate 被编译用于这样的测试。

#[cfg(not(test))] 
use log::{info, warn}; // Use log crate when building application
 
#[cfg(test)]
use std::{println as info, println as warn}; // Workaround to use prinltn! for logs.

为了防止 cargo 使测试标准输出静音,请运行这样的测试

$ cargo test -- --nocapture

另一种优雅的解决方法是使用 test-env-log crate

#[test_env_log::test] // Automatically wraps test to initialize logging
fn hello_log_tests() {
  // ...
}

要使用依赖项(例如错误消息中提到的 env_logger)进行测试,请将其包含在 dev-dependencies 部分

[dev-dependencies]
env_logger = "*"