在 Rust 中组织 code/tests 的正确方法是什么?
What is the proper way to organize your code/tests in Rust?
在 Rust 书的第 11 章第 3 节 (11.3) 中,它讨论了将集成测试引入项目的过程。简而言之,为 'src' 创建一个名为 'tests' 的兄弟目录,并在 'tests' 目录中的一个文件中找到您的测试代码。书中例子的文件内容如下:
use adder;
#[test]
fn it_adds_two() {
assert_eq!(4, adder::add_two(2));
}
'src/lib.rs' 文件的代码在模块中声明:
mod adder {
...
}
这对我不起作用。我不得不删除 'lib.rs' 中的模块声明,并将其添加到我的集成测试文件中的 'use adder;' 声明之前:
extern crate adder;
所以,我很困惑。语言有什么变化,文档还没有跟上吗?是否不允许将库 ('src/lib.rs') 中包含的代码组织成模块?如果有人可以向我指出 Rust 中代码组织的综合总结,那就太好了。谢谢
让你的src/lib.rs
变成:
pub mod adder {
...
}
或者如果您在名为 adder.rs
的文件中有一个模块,则只需输入 pub mod adder;
需要注意的重要一点是,每个文件都是一个模块,需要 pub
关键字才能从板条箱中公开模块。
然后在您的集成测试文件中(在 /tests/
下),执行:
use <cratename>::adder::<whatever you want to import or *>;
fn main() {
...
}
在 Rust 书的第 11 章第 3 节 (11.3) 中,它讨论了将集成测试引入项目的过程。简而言之,为 'src' 创建一个名为 'tests' 的兄弟目录,并在 'tests' 目录中的一个文件中找到您的测试代码。书中例子的文件内容如下:
use adder;
#[test]
fn it_adds_two() {
assert_eq!(4, adder::add_two(2));
}
'src/lib.rs' 文件的代码在模块中声明:
mod adder {
...
}
这对我不起作用。我不得不删除 'lib.rs' 中的模块声明,并将其添加到我的集成测试文件中的 'use adder;' 声明之前:
extern crate adder;
所以,我很困惑。语言有什么变化,文档还没有跟上吗?是否不允许将库 ('src/lib.rs') 中包含的代码组织成模块?如果有人可以向我指出 Rust 中代码组织的综合总结,那就太好了。谢谢
让你的src/lib.rs
变成:
pub mod adder {
...
}
或者如果您在名为 adder.rs
的文件中有一个模块,则只需输入 pub mod adder;
需要注意的重要一点是,每个文件都是一个模块,需要 pub
关键字才能从板条箱中公开模块。
然后在您的集成测试文件中(在 /tests/
下),执行:
use <cratename>::adder::<whatever you want to import or *>;
fn main() {
...
}