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

Rust需在main.rs声明mod tests才能运行单元测试?是规范还是配置问题?

问题描述

本人有其他编程语言开发背景,在Rust项目中发现一个现象:必须在main.rs中添加特定代码声明,src/tests/目录下的单元测试才能被cargo test检测并正常运行;如果移除该声明,测试就无法执行。想知道这是Rust的标准规范,还是我遗漏了相关配置?

项目结构:

src/
-- config/
-- models/
-- services/
-- tests/    <-- 此处存放测试的mod.rs
main.rs

需添加的代码:

#[cfg(test)]
mod tests;
解答

这是Rust模块系统的标准行为,不是你漏了配置,具体说明如下:

  • Rust的模块遵循树状结构,main.rs是项目的根模块,只有被根模块(或其下属子模块)显式引入的子模块,才会被编译器纳入编译范围。src/tests/作为src/下的子目录,对应的模块不会自动被根模块识别,必须通过mod tests;声明来引入。
  • #[cfg(test)]属性的作用是限定编译时机:只有在执行cargo test命令时,才会编译这个测试模块,避免测试代码混入生产环境的编译产物中。
  • 如果你不想在main.rs中添加这行声明,可以更换测试组织方式:将tests/目录放在项目根目录(与src/同级),这种目录下的测试属于「集成测试」,Cargo会自动识别并编译,无需手动引入模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 01:05:05