gpt4 book ai didi

rust - 不同目录中功能的单元测试给出错误

转载 作者:行者123 更新时间:2023-11-29 08:35:39 31 4
gpt4 key购买 nike

我正在尝试为编写的 GCD 代码编写单元测试 here .我也在尝试为此功能编写单元测试。测试是here

这是项目的目录结构:

ProgrammingRust $ tree
.
├── Cargo.lock
├── Cargo.toml
├── README.md
├── src
│ ├── chapter1
│ │ ├── cmd_line_args.rs
│ │ └── gcd.rs
│ └── main.rs
├── target
│ ├── debug
│ │ ├──
└── tests
├── chapter1
└── gcd.rs

48 directories, 108 files

当我尝试运行测试时,出现此错误:

error[E0432]: unresolved import `chapter1`
--> tests/gcd.rs:1:7
1 | use chapter1;
| ^^^^^^^^ no `chapter1` in the root

error[E0425]: cannot find function `gcd` in this scope
--> tests/gcd.rs:10:20
|
10 | assert_eq!(gcd(15, 14), 1);
| ^^^ not found in this scope

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

最佳答案

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

extern crate chapter1;

// ...

如果你想做白盒测试(并且可以访问私有(private)成员),创建一个只在 #[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;

关于rust - 不同目录中功能的单元测试给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49868671/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com