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

Rust项目tests目录无法导入src中api模块的问题求助

解决Rust集成测试无法访问源文件模块的问题

问题原因

tests目录下的文件属于集成测试,它们是独立的二进制目标,并非主crate的一部分。你的项目当前是binary crate(入口为src/main.rs),这类crate没有对外暴露的库接口,所以测试文件里用crate::api或crate::src::api都会找不到模块。

推荐解决方案:改成库+二进制混合结构

这是Rust项目的标准做法,既能保留二进制可执行文件,又能让集成测试正常访问模块:

  1. 在src目录下新建lib.rs文件,把src/main.rs里的内容移过去:
    pub mod api;
    pub use api::*;
    
  2. 修改src/main.rs,通过库crate导入模块(替换成你Cargo.toml里的name字段值):
    use 你的crate名::*;
    
    // 这里保留原来main函数的逻辑(如果有的话)
    fn main() {
        // ...
    }
    
  3. 在tests/my_test.rs里,直接通过库crate名导入api模块:
    use 你的crate名::api::*;
    
    // 编写测试用例
    #[test]
    fn test_api() {
        // ...
    }
    

临时方案:直接指定模块路径(不推荐)

如果不想调整项目结构,也可以在测试文件里用path属性手动导入src里的模块,但这种方式跳过了crate的对外接口,不符合集成测试的设计初衷:

#[path = "../src/api.rs"]
mod api;
use api::*;

// 测试用例...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:35:29