我有crate-0,src/lib.rs
如下:
#[cfg(test)] pub mod test_utils { pub struct OnlyInTests(pub usize); pub fn helper() -> usize { 999 } #[test] fn test_0() { let _ = OnlyInTests(helper()); } }
我也有crate-1,我需要在crate-0中定义的测试框架:
extern crate crate_0; #[cfg(test)] pub mod test_utils { // This will error out - cannot find mod test_utils in crate_0 use crate_0::test_utils::{OnlyInTests, helper()}; #[test] fn test_1() { let _ = OnlyInTests(helper()); } }
这里的代码很简单,可以复制粘贴,但实际上我有复杂的测试工具,我想在测试crate-1时使用它.
我无法将测试实用程序分离到不同的包中,因为我会得到循环依赖性错误:test_utils
将依赖于crate-0
创建内容并crate-0
依赖于test_utils
测试).我也不想这样做,因为还有更多的板条箱,其测试实用程序我想在依赖板条箱中使用.