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

Rust指定单测运行异常:执行filename_1时同时运行filename_2的解决方法

问题描述

我正在参与一个项目的测试工作,运行测试的命令如下:

RUSTFLAGS="-C target-cpu=native" cargo +stable test --profile release --features=x86_64-unix,experimental -p name_of_root_folder filename::test_function

项目中有多个测试文件,所有文件内的测试函数均命名为test_function。通常执行上述命令时,会通过文件名区分并仅运行指定文件的测试,但存在异常情况:当尝试运行filename_1的测试时,filename_1和filename_2的测试会同时执行,其他文件则不受影响。修改测试函数名称也无法解决该问题,目前暂未找到原因。

请问如何无需通过注释mod.rs中的测试项,就能每次仅运行单个指定测试?

解决方案

以下是几种无需修改mod.rs即可单独运行指定测试的方法:

  • 添加--exact参数严格匹配:Cargo默认会进行模糊匹配,可能导致名称相似的测试被一并执行。添加--exact参数后会严格匹配你指定的测试路径,避免误触发其他测试。修改后的命令如下:

    RUSTFLAGS="-C target-cpu=native" cargo +stable test --profile release --features=x86_64-unix,experimental -p name_of_root_folder --exact filename_1::test_function
    
  • 使用完整模块路径:如果filename_1和filename_2所在的模块层级不同,直接指定完整的模块路径可以精准定位测试。例如:

    RUSTFLAGS="-C target-cpu=native" cargo +stable test --profile release --features=x86_64-unix,experimental -p name_of_root_folder crate::path::to::filename_1::test_function
    

    这里的crate::path::to::需要替换为filename_1实际所在的模块路径。

  • 先列出测试的完整标识符再精准调用:先执行以下命令列出所有测试的完整名称,找到filename_1对应的test_function的唯一标识符:

    RUSTFLAGS="-C target-cpu=native" cargo +stable test --profile release --features=x86_64-unix,experimental -p name_of_root_folder --list
    

    然后直接复制该完整标识符到测试命令中运行,确保只触发目标测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 04:52:10