在 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() {
...
}