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

如何单独运行测试Rust项目中指定.rs文件或单个fn函数

Rust 单文件/单函数测试实现方案

核心问题排查

执行cargo test时触发main.rs业务逻辑,90%是两类原因:

  • main.rs中存在未收敛的顶层执行代码:只要编译项目二进制,main函数入口的逻辑就会被链接,不要把业务执行逻辑裸写在源码顶层,正常收敛在fn main()函数的执行流程中即可,测试运行不会主动触发二进制执行
  • 集成测试目录位置错误:tests目录必须放在项目根目录(与src、Cargo.toml同级),放在src内部会被cargo识别为普通业务模块,被main引用后自然会执行业务逻辑

单元测试:测试单文件/单个私有函数

这是验证单个.rs文件、内部私有fn最简便的方式,不需要新建tests目录,直接在待测试的.rs文件末尾添加测试模块即可,测试代码仅在执行cargo test时会被编译。
比如要测试src下parse_config.rs中的内部函数parse_line,直接在文件末尾追加:

// 业务代码
fn parse_line(input: &str) -> Option<u32> {
    input.parse().ok()
}

// 测试模块
#[cfg(test)]
mod tests {
    use super::*; // 导入当前模块下的所有业务代码

    #[test] // 标记该函数为测试用例
    fn test_parse_line_valid_input() {
        assert_eq!(parse_line("123"), Some(123));
    }

    #[test]
    fn test_parse_line_invalid_input() {
        assert_eq!(parse_line("abc"), None);
    }
}

常用执行命令:

  • 测试单个函数:cargo test test_parse_line_valid_input
  • 测试当前rs文件下所有用例:cargo test parse_config::tests

集成测试:测试跨模块公共逻辑

根目录下新建tests文件夹后,文件夹内每个.rs文件都是独立的集成测试入口,cargo会自动识别,不需要手动写main函数。
比如新建tests/cli_logic_test.rs测试主项目对外暴露的逻辑,直接导入项目包即可(包名和Cargo.toml中配置的name字段一致):

// 假设Cargo.toml中name为my_cli
use my_cli::parse_config::parse_line;

#[test]
fn test_cli_parse_flow() {
    assert_eq!(parse_line("456"), Some(456));
}

常用执行命令:

  • 跑单个集成测试文件:cargo test --test cli_logic_test
  • 跑所有集成测试:cargo test --test '*'

CLion 快捷操作

安装官方Rust插件后,所有带#[test]标记的函数、测试模块旁都会出现绿色运行按钮,点击即可直接运行对应测试用例,不需要手动输入命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:27:25