如何在工作区中的 Rust crates 之间共享测试代码?

JP *_*mau 5 testing rust

我在一个工作区中有几个板条箱。一个 crate 定义了一个 Trait,其他人实现了它。我想编写一些测试函数,它们只采用 Trait 并确保所有不变量始终为真,并且示例代码适用于 Trait 的所有实例。所以我想定义一个测试套件,并且每个箱子都应该说“我将我的测试定义为这个测试套件,具有我自己的 Trait 实现”。那可能吗?

我想我可以在我的库中定义一个宏,它使用 Trait 实例生成所有测试,但这会在我的库中混合生产和测试代码。我工作区中的另一个 crate 可以引用我的主 crate 的 tests 文件夹中存在的测试模块吗?

所以基本上我有:

workspace
|-- crate1
    |-- src
        |-- lib.rs
    |-- tests
        |-- harness.rs
|-- crate2
    |-- src
        |-- lib.rs
    |-- tests
        |-- test2.rs
Run Code Online (Sandbox Code Playgroud)

我希望test2.rs能够使用harness.rs. 那可能吗?

Yur*_*rik 3

您可以使用path属性在板条箱之间共享代码:

#[path="../shared/my_utils.rs"]
mod utils;
Run Code Online (Sandbox Code Playgroud)