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

hgqdbh6s  于 2023-11-19  发布在  Go
关注(0)|答案(2)|浏览(178)

下面是Rust项目的布局:

  1. project_name
  2. ├── crate_1
  3. ├── src
  4. ...
  5. └── main.rs
  6. └── Cargo.toml
  7. ├── crate_2
  8. ├── src
  9. ...
  10. └── lib.rs
  11. └── Cargo.toml
  12. ├── tests
  13. └── tests.rs <-- run tests in here
  14. └── Cargo.toml

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

30byixjq

30byixjq1#

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

  1. [workspace]
  2. members = [
  3. "crate1",
  4. "crate2",
  5. "tests"
  6. ]

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

  1. [package]
  2. name = "tests"
  3. version = "0.1.0"
  4. edition = "2021"
  5. publish = false
  6. [dev-dependencies]
  7. crate1 = { path = "../crate1" }
  8. crate2 = { path = "../crate2" }
  9. [[test]]
  10. name = "test_crate1"
  11. path = "test_crate1.rs"
  12. [[test]]
  13. name = "test_crate2"
  14. path = "test_crate2.rs"


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

展开查看全部
tv6aics1

tv6aics12#

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

  1. [package]
  2. name = "your package"
  3. version = "0.0.0"

字符串

相关问题