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

Rust集成测试无法导入src目录下add_two函数的问题

解决Rust集成测试无法导入项目函数的问题

问题原因

tests目录下的集成测试文件是独立的Rust crate,和主项目完全分离。你用crate::add_two::add_two;导入时,crate::指向的是测试crate本身,而非你的主项目,因此找不到目标函数。

解决方案

方案一:直接修改集成测试的导入语句

修改tests/integration_test.rs中的导入代码,用主项目的crate名称(即Cargo.toml里的name字段tutorial1)来引用:

use tutorial1::add_two::add_two; 

#[test]
fn add_two_with_two() {
    assert_eq!(add_two(2), 4); 
}

方案二:改用Library + Binary的规范结构(推荐)

这种方式更符合Rust项目最佳实践,将核心逻辑放在library crate中,binary crate仅作为入口调用library:

  1. 创建src/lib.rs文件,内容如下:
pub mod add_two;
  1. 修改src/main.rs,移除内部的pub mod add_two;,改为从library导入:
use tutorial1::add_two::add_two;

fn main() {
    // 可选:添加测试逻辑
    println!("2 + 2 = {}", add_two(2));
}

#[cfg(test)]
mod tests {
    use super::add_two;

    #[test]
    fn add_two_and_two(){
        assert_eq!(4, add_two(2)); 
    }
    #[test]
    fn add_three_and_two(){
        assert_eq!(5, add_two(3)); 
    }
    #[test]
    fn one_hundred(){
        assert_eq!(102, add_two(100)); 
    }
    #[test]
    #[ignore]
    fn test_we_want_to_ignore() {
        // 耗时测试代码
    }
}
  1. 集成测试文件的导入语句保持方案一中的use tutorial1::add_two::add_two;即可。

完成后运行cargo test,所有单元测试和集成测试都能正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:52:41