Unit testing 如何将主板条箱导入测试文件?Rust doc示例没有';行不通

Unit testing 如何将主板条箱导入测试文件?Rust doc示例没有';行不通,unit-testing,rust,Unit Testing,Rust,我正在为我的rust项目设置单元测试并使用。文档中说要这样做,其中“adder”是项目名称(如果我没弄错的话) 测试/集成 use adder; mod common; #[test] fn it_adds_two() { common::setup(); assert_eq!(4, adder::add_two(2)); } 我也做过类似的事情。我的文件夹结构是tests/users.rs,其中tests/就在示例中src/的旁边。以下是我的测试文件的实际外观: 测试/用户

我正在为我的rust项目设置单元测试并使用。文档中说要这样做,其中“adder”是项目名称(如果我没弄错的话)

测试/集成

use adder;
mod common;

#[test]
fn it_adds_two() {
    common::setup();
    assert_eq!(4, adder::add_two(2));
}
我也做过类似的事情。我的文件夹结构是tests/users.rs,其中tests/就在示例中src/的旁边。以下是我的测试文件的实际外观:

测试/用户

use test_project;

#[test]
pub fn create_test() {
    //do things with the modules from main 
}
但我得到了一个错误:
无外部板条箱“测试项目”

据我所知,我正在严格遵守文件规定。有人能指出我在这里遗漏了什么吗

以下是我的文件夹结构:

在没有导入
货物测试的情况下运行虚拟测试没有问题,因此货物能够找到测试/文件夹而没有任何问题

这是我的货物

[package]
name = "test_project"
version = "0.1.0"
authors = ["mcrandall <randall123@protonmail.com>"]
edition = "2018"

[lib]
name = "errormsg"
path = "errormsg/src/lib.rs"

[dependencies]
diesel = { version = "1.4.5", features = ["sqlite"] }
dotenv = "0.15.0"
download_rs = "0.2.0"
futures = "0.3.12"
futures-util = "0.3.12"
oauth2 = { version = "3.0"}
reqwest = { version = "0.11", features = ["json", "stream", "blocking"] }
serde = { version= "1.0.123", features = ["derive"] }
serde_derive = "1.0.123"
serde_json = "1.0.61"
simple-server = "0.4.0"
tokio = { version = "1", features = ["full"] }
url = "2.2.0"
uuid = { version = "0.8.2", features = ["v4"] }
[软件包]
name=“测试项目”
version=“0.1.0”
作者=[“mcrandall”]
edition=“2018”
[lib]
name=“errormsg”
path=“errormsg/src/lib.rs”
[依赖关系]
diesel={version=“1.4.5”,功能=[“sqlite”]}
dotenv=“0.15.0”
下载\u rs=“0.2.0”
期货=“0.3.12”
期货util=“0.3.12”
oauth2={version=“3.0”}
reqwest={version=“0.11”,功能=[“json”,“流”,“阻塞”]}
serde={version=“1.0.123”,features=[“派生”]}
serde_derive=“1.0.123”
serde_json=“1.0.61”
简单服务器=“0.4.0”
东京={version=“1”,功能=[“full”]}
url=“2.2.0”
uuid={version=“0.8.2”,功能=[“v4”]}

确保在您的Cargo.toml
name=“test\u project”
中。 此外,仅当它是库时,才能导入它

查看您的Cargo.toml,lib部分告诉Cargo,此包导出
errormsg/src/lib.rs
中名为
errormsg
的库。因此,
test\u项目
将不适用于您,因为每个包只允许一个lib

您的问题有两种解决方案。
您可以将
errormsg
制作成一个模块,然后使用
test\u project::errormsg
tests/users.rs
中导入该模块 或者,您可以创建一个单独的包,然后将其导入Cargo.toml文件:

[dependencies]
errormsg = { version = "0.1", path = "./../errormsg" }

另一种方法是对包裹进行分组,但我并不十分熟悉。

你可能在板条箱名称或其他地方输入了错误,我可以说这一章的文档没有问题。你的
Cargo.toml
的内容是什么?@lambdafiry我用Cargo.toml更新了我的答案。感谢您的帮助。上面写着“一个包只能有一个库。”。这就是问题所在吗?但锈为什么会这样呢?难道我不能创建我想要链接到的库吗?一个板条箱/包只能导出一个库,主要通过lib.rs文件使用。请阅读下面的答案了解原因。我会更新我的答案,希望能解决你的问题。谢谢你的依赖方式。这正是我最初使用[lib]声明的目的。我要指出的是,为了在tests/users.rb中调用
use test\u project
,我必须在src/lib.rs中列出模块,而不是我原来的main.rs(在我的原始问题中没有显示)。