You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让cargo test的测试结果按名称字母顺序排序?

问题描述

我用cargo test运行Rust测试时,发现测试结果的输出顺序每次都不一样,看起来是随机的。比如当前的输出是:

test node::tests::start_node::get_value_start ... ok
test node::tests::start_node::get_value ... ok
test node::tests::start_node::set_value ... ok
test node::tests::main_node::test_new ... ok
test main_tests::run_checks ... ok
test node::tests::start_node::test_new ... ok
test sigmoid::tests::sig_deriv_f32 ... ok
test sigmoid::tests::sig_deriv_inf::test_f32 ... ok
test sigmoid::tests::sig_deriv_inf::test_f64 ... ok
test training_data::tests::iter_chunks ... ok
test training_data::tests::get_chunks ... ok
test sigmoid::tests::sig_inf::test_f64 ... ok
test sigmoid::tests::sig_f32 ... ok
test sigmoid::tests::sig_inf::test_f32 ... ok
test sigmoid::tests::sig_deriv_f64 ... ok
test sigmoid::tests::sig_f64 ... ok

我希望能让测试结果按字母顺序输出,类似这样:

test main_tests::run_checks ... ok
test node::tests::main_node::test_new ... ok
test node::tests::start_node::get_value_start ... ok
test node::tests::start_node::get_value ... ok
test node::tests::start_node::set_value ... ok
test node::tests::start_node::test_new ... ok
test sigmoid::tests::sig_deriv_f32 ... ok
test sigmoid::tests::sig_deriv_f64 ... ok
test sigmoid::tests::sig_deriv_inf::test_f32 ... ok
test sigmoid::tests::sig_deriv_inf::test_f64 ... ok
test sigmoid::tests::sig_f32 ... ok
test sigmoid::tests::sig_f64 ... ok
test sigmoid::tests::sig_inf::test_f32 ... ok
test sigmoid::tests::sig_inf::test_f64 ... ok
test training_data::tests::iter_chunks ... ok
test training_data::tests::get_chunks ... ok

请问有没有办法实现这个需求?

解决办法

有两种实用方式可以让cargo test的输出按字母顺序排列:

1. 强制单线程运行测试

直接执行以下命令:

cargo test -- --test-threads=1

--test-threads=1会强制测试在单线程环境下运行,此时测试会按字母顺序执行并输出结果。如果需要保留测试函数内部的打印内容,可以加上--nocapture参数:

cargo test -- --nocapture --test-threads=1

2. 使用内置排序参数(Rust 1.64+)

从Rust 1.64版本开始,cargo test支持直接指定排序规则的参数,执行命令:

cargo test -- --sort alphabetical

这个参数会在所有测试完成后,统一按字母顺序整理输出结果,无需强制单线程,效率更高。

如果想默认启用该行为,可以在项目根目录的.cargo/config.toml中添加配置:

[test]
sort = "alphabetical"

之后每次执行cargo test都会自动按字母顺序输出测试结果。

内容的提问来源于stack exchange,提问作者MarcellPerger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 09:15:33