这是我的目录结构,
\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.lock\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 add.rs\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.rs\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tests\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 add_test.rs\nRun Code Online (Sandbox Code Playgroud)\nadd.rs
pub fn add(a: u8, b: u8) -> u8 {\n return a + b;\n}\nRun Code Online (Sandbox Code Playgroud)\nmain.rs
pub mod add;\n\nfn main() {}\nRun Code Online (Sandbox Code Playgroud)\nadd_test.rs
#[cfg(test)]\nmod tests {\n #[test]\n fn add_test() {\n // how do I use add.rs module?\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n在add_test函数中如何测试 的add.rs函数add?
请注意,您正在使用mod add;. 这不是公共模块,这意味着它在您的板条箱之外不可用。
要使其在包外可用(并因此在测试中可用),您可以将模块公开,或重新导出函数本身。此外,为此,您需要一个lib.rs文件来src放置导出:
// Make module public
pub mod add;
// Make the function available at the root of the crate
pub use add::add;
Run Code Online (Sandbox Code Playgroud)
然后,为了在测试中使用您的函数,您可以像为不同的 crate 调用函数一样调用它。假设你的箱子被命名为your-crate:
// If your module is public
your-crate::add::add(2,3);
// If you reexport the function
your-crate::add(2,3);
Run Code Online (Sandbox Code Playgroud)
请参阅Rust 书中有关测试组织的章节了解更多详细信息。