首页 > 解决方案 > 在 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”中的模块声明,并在“使用加法器”之前添加它;我的集成测试文件中的声明:

extern crate adder;

所以,我很困惑。语言是否发生了变化,文档还没有跟上?是否不允许将库('src/lib.rs')中包含的代码组织成模块?如果有人能指出我对 Rust 代码组织的全面总结,那就太好了。谢谢。

标签: rustintegration-testingdirectory-structure

解决方案


让你src/lib.rs成为:

pub mod adder {
...
}

或者如果您在一个名为 的文件中有一个模块adder.rs,那么只需将pub mod adder;

需要注意的重要一点是,每个文件都是一个模块,并且pub需要关键字才能从 crate 中公开模块。

然后在您的集成测试文件(在 下/tests/)中,执行以下操作:

use <cratename>::adder::<whatever you want to import or *>;

fn main() {
...
}

推荐阅读