使用rust cargo在工作区根目录下运行测试

hgqdbh6s  于 11个月前  发布在  Go
关注(0)|答案(2)|浏览(134)

下面是Rust项目的布局:

project_name
 ├── crate_1
 │     ├── src
 │     │     ...
 │     │     └── main.rs
 │     └── Cargo.toml
 ├── crate_2
 │     ├── src
 │     │     ...
 │     │     └── lib.rs
 │     └── Cargo.toml
 ├── tests
 │     └── tests.rs <-- run tests in here
 └── Cargo.toml

字符串
我想使用cargo运行tests目录中的测试,但是cargo似乎找不到它们。有没有办法让cargo运行它们?

30byixjq

30byixjq1#

tokio就是一个很好的例子。
现在,您已经有了一个tests目录,让我们将其添加到工作空间Cargo.toml中的members

[workspace]

members = [
    "crate1",
    "crate2",

    "tests"
]

字符串
我们假设在tests目录下有两个集成测试文件test_crate1.rstest_crate2.rs
tests目录下创建一个Cargo.toml,其中包含以下内容:

[package]
name = "tests"
version = "0.1.0"
edition = "2021"
publish = false

[dev-dependencies]
crate1 = { path = "../crate1" }
crate2 = { path = "../crate2" }

[[test]]
name = "test_crate1"
path = "test_crate1.rs"

[[test]]
name = "test_crate2"
path = "test_crate2.rs"


在工作区目录中运行cargo test进行检查。

tv6aics1

tv6aics12#

如果您的项目是一个可分发的包,由几个工作区crate组成,并且您希望从根tests目录运行集成测试。
您不需要将tests目录指定为工作区成员。
看看clap does it是如何工作的
如果你告诉Cargo你的根目录Cargo.toml实际上是一个包本身,它会把根目录tests当作正常目录

[package]
name = "your package"
version = "0.0.0"

字符串

相关问题