Rust 不同目录中函数的单元测试出现错误

Rust 不同目录中函数的单元测试出现错误,rust,rust-cargo,Rust,Rust Cargo,我正在尝试为编写的GCD代码编写一个单元测试。我还试图为这个函数编写单元测试。测试是 这是项目的目录结构: ProgrammingRust$树 . ├── 货锁 ├── 货舱 ├── 自述文件 ├── src │ ├── 第1章 │ │ ├── 命令行参数 │ │ └── gcd.rs │ └── 梅因 ├── 目标 │ ├── 调试 │ │ ├── └── 测验 ├── 第1章 └── gcd.rs 48个目录,108个文件 当我尝试运行测试时,出现以下

我正在尝试为编写的GCD代码编写一个单元测试。我还试图为这个函数编写单元测试。测试是

这是项目的目录结构:

ProgrammingRust$树
.
├── 货锁
├── 货舱
├── 自述文件
├── src
│   ├── 第1章
│   │   ├── 命令行参数
│   │   └── gcd.rs
│   └── 梅因
├── 目标
│   ├── 调试
│   │   ├── 
└── 测验
├── 第1章
└── gcd.rs
48个目录,108个文件
当我尝试运行测试时,出现以下错误:

错误[E0432]:未解析的导入`chapter1`
-->测试/gcd.rs:1:7
1 |使用第1章;
|^^^^^^^^根目录中没有'chapter1'
错误[E0425]:在此作用域中找不到函数“gcd”
-->测试/一般规格rs:10:20
|
10 |断言| eq!(gcd(15,14,1);
|^^^^在此范围内找不到

我想在
tests/gcd.rs
访问
src/chapter1/gcd.rs
中的函数,但我不知道如何将函数
gcd.rs
链接到
tests
文件夹中的测试。

在Rust中,存在于
tests
目录下的测试被称为“黑盒”测试并将测试的板条箱视为
extern
库。你想要的是

extern crate chapter1;

// ...
如果您想进行白盒测试(并有权访问私有成员),请创建一个仅在
#[cfg(test)]
下编译的模块,如下所示:

#[cfg(test)]
mod tests {
    #[test]
    fn test_foo() {
        // may use any `use` declaration as if this were any
        // other module
        use super::Something;
    }
 }

您还可以像普通模块一样创建一个文件,并且只包装相应的
mod
声明,如下所示:
#[cfg(test)]mod tests

请在问题中包含相关代码(最好是a)。