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
相关产品推荐
相关产品推荐

