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

Rust基础集成测试遇模块导入错误:无法解析mymod模块

Rust测试模块导入错误排查与解决

问题场景

项目实现了基础运算功能,cargo run可正常执行,但运行cargo test时触发模块解析错误,提示无法找到mymod模块,尝试多种use导入方式均未解决。

问题根源

  1. 测试crate的独立性:tests目录下的测试文件是作为独立crate编译的,不属于src主crate的内部模块体系,因此无法直接引用src中的私有模块。
  2. 模块可见性不足:src/main.rs中声明的mod mymod和mod mysub是私有模块,外部crate(测试crate)无权访问。
  3. 导入路径错误:测试文件未通过项目的crate名(sample01)来定位主crate中的公共模块。

解决方法

步骤1:将src中的模块设为公共可见

修改src/main.rs,把私有模块声明改为公共模块,让测试crate能访问:

pub mod mymod;
pub mod mysub;
use mysub::mysub;
use mymod::operations::{mysum, mymul};
pub fn mydiv(x: i32, y: i32) -> i32 { x/y }
fn main() {
    println!("my operators: 6, 2");
    let s:i32 = mysum(6,2);
    let m:i32 = mymul(6,2);
    let d:i32 = mydiv(6,2);
    let sb:i32 = mysub(6,2);
    println!("The value of the sum is: {s}");
    println!("The value of the mul is: {m}");
    println!("The value of the div is: {d}");
    println!("The value of the sub is: {sb}");
}

步骤2:在测试文件中通过crate名导入目标函数

修改tests/mymod_test.rs,使用项目crate名sample01作为根路径导入mysum:

use sample01::mymod::operations::mysum;

#[test]
fn test_sum() {
    let s:i32 = mysum(2,3);
    assert_eq!(s, 5);
}

验证

执行cargo test,测试即可正常编译并运行。若需测试其他函数(如mysub、mydiv),同样通过sample01::mysub、sample01::mydiv的路径导入即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 00:15:14