9个版本
0.2.16 | 2024年4月30日 |
---|---|
0.2.15 | 2024年2月26日 |
0.2.14 | 2023年12月6日 |
0.2.13 | 2023年10月13日 |
0.0.0 | 2021年6月29日 |
#9 in 测试
836,230每月下载量
用于 462 个Crates (448直接)
13KB
test-log
test-log 是一个库,负责为Rust测试自动初始化日志和/或跟踪。
在运行Rust测试时,通常需要轻松访问测试代码输出的详细日志消息。通常,这些日志消息可能来自 log
库或通过 tracing
基础设施发出。
在测试的上下文中,问题在于需要某种形式的初始化,才能使这些库的消息出现在标准输出流上。
例如,常用的 env_logger
(它提供了基于 log
的日志配置的简单方法),需要在每个测试中进行初始化
let _ = env_logger::builder().is_test(true).try_init();
在每个测试中。
类似地,基于 tracing
的解决方案需要注册一个订阅者,该订阅者将事件/跨度写入终端。
这个库以直观的方式处理每个测试的初始化。
用法
该库提供了一个自定义的 #[test]
属性,当用于运行特定测试时,会先初始化 log
和/或 tracing
。
示例
因此,使用方法非常简单,只需导入和使用该属性
use test_log::test;
#[test]
fn it_works() {
info!("Checking whether it still works...");
assert_eq!(2 + 2, 4);
info!("Looks good!");
}
当然,也可以为所选的测试集初始化日志,只需使用自定义属性注释这些测试即可
#[test_log::test]
fn it_still_works() {
// ...
}
您还可以将其包装在其他属性中。例如,假设您使用 #[tokio::test]
来运行异步测试
use test_log::test;
#[test(tokio::test)]
async fn it_still_works() {
// ...
}
功能
该软件包包含两个与“后端”初始化相关的功能。
log
(默认启用),控制log
软件包的初始化。trace
(默认禁用),控制tracing
软件包的初始化。
根据被测试的软件包(及其依赖项)所使用的后端,应启用相应的功能,以便在终端上显示测试输出的消息。
除此之外,color
功能(默认启用)控制是否默认使用颜色输出。
日志配置
当运行 cargo test
时,默认情况下框架会捕获输出,仅在测试失败时显示。可以使用 --nocapture
参数来覆盖此设置。例如:
$ cargo test -- --nocapture
此外,会尊重 RUST_LOG
环境变量,并可以使用它来影响要与之一起工作的日志级别(以及其他事项)。请参阅 env_logger
文档 和 tracing-subscriber
文档,了解支持的语法和更多信息。
如果启用了 trace
功能,可以使用 RUST_LOG_SPAN_EVENTS
环境变量来配置跟踪订阅者,在跨度生命周期中的特定点记录合成事件。将变量设置为要看到的逗号分隔的事件列表。例如,RUST_LOG_SPAN_EVENTS=full
或 RUST_LOG_SPAN_EVENTS=new,close
。
有效的事件有 new
、enter
、exit
、close
、active
和 full
。请参阅 tracing_subscriber
文档 了解事件的详细含义。
MSRV 策略
此软件包遵循 Cargo 的 语义版本规则。至少,它使用最近的 Rust 稳定版减去五个小版本(“N - 5”)构建。例如,假设最新的 Rust 稳定版是 1.68
,则该软件包保证可以与 1.63
及更高版本构建。
依赖项
~0.3–9MB
~70K SLoC