我有一些使用 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`
答案 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 = "*"