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

如何为cargo test指定的测试用例运行cargo flamegraph?

解决cargo flamegraph分析单个测试用例失败的问题

你能通过cargo test tests::my_test -- --nocapture运行测试,但用cargo flamegraph报错,核心是没搞对不同测试类型的参数格式,下面是对应解决方案:

针对单元测试(tests::my_test)的正确命令

你的tests::my_test属于单元测试(写在src目录下的#[cfg(test)]模块里),根据项目类型选对应命令:

  1. 库 crate(有src/lib.rs):
cargo flamegraph --unit-test --lib -- tests::my_test
  1. 二进制 crate(仅src/main.rs):
    把your_bin_name换成你Cargo.toml里的bin名称(默认和crate名一致):
cargo flamegraph --unit-test --bin your_bin_name -- tests::my_test
  1. 单crate通用写法:
    用--package指定你的crate名称:
cargo flamegraph --unit-test --package your_crate_name -- tests::my_test

如果需要保留测试输出(类似--nocapture),把参数加在最后:

cargo flamegraph --unit-test --lib -- tests::my_test -- --nocapture

你之前命令的错误原因

  1. cargo flamegraph --unit-test -- test::mytest:
    flamegraph无法自动识别项目的target(比如你的项目是二进制crate,或存在多个target),必须显式指定--lib/--bin/--package。

  2. cargo flamegraph --unit-test my_crate -- test::mytest:
    参数顺序错误,--unit-test后不能直接跟crate名,必须用--package your_crate_name来指定。

  3. cargo flamegraph --test tests::mytest -- --nocapture:
    --test参数是给集成测试用的(tests目录下的文件),而tests::my_test是单元测试的路径,不是集成测试的target名,所以会提示找不到目标。

集成测试的火焰图命令(如果需要)

如果是tests目录下的集成测试文件(比如tests/my_test.rs),用以下命令:

# 分析整个集成测试文件
cargo flamegraph --test my_test

# 分析集成测试里的单个函数
cargo flamegraph --test my_test -- my_test::some_function

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:26:00