网站建设期任务及总结,营销单页网站制作,wordpress 底部版权,如何微信公众号文章到wordpress概述
在学习rust的过程中#xff0c;当项目结构略微复杂的时候#xff0c;写集成测试的时候发现总是不能引用项目中的代码#xff0c;导致编写测试用例失败。查阅了教程#xff0c;一般举例都很简单。查阅了谷歌和百度以及ai#xff0c;也没有找到满意的答案。这里记录一…概述
在学习rust的过程中当项目结构略微复杂的时候写集成测试的时候发现总是不能引用项目中的代码导致编写测试用例失败。查阅了教程一般举例都很简单。查阅了谷歌和百度以及ai也没有找到满意的答案。这里记录一下供大家参考。
项目结构举例
cargo.toml
[package]
name test_rust
version 0.1.0
edition 2021[dependencies]
rusqlite { version 0.31.0, features [bundled] }[lib]
name test_rust
path src/my_lib.rs
my_lib.rs
pub mod rust_lang;rust_lang/mod.rs
pub mod trait_sample;
pub mod borrow_mut;
......rust_lang/borrow_mut/mod.rs
pub mod rc_refcell;
pub mod circular_reference;
// 单体测试例子
#[cfg(test)]
mod tests {use super::*;use std::cell::RefCell;main.rs
mod use_rusqlite {pub mod sqlite_file_sample;pub mod sqlite_mem_sample;
}use crate::use_rusqlite::{sqlite_file_sample, sqlite_mem_sample};
use test_rust::rust_lang::borrow_mut;
use test_rust::rust_lang::trait_sample;
......tests/integration_test_sample.rs
use std::cell::RefCell;use test_rust::rust_lang::borrow_mut;
use test_rust::rust_lang::trait_sample;
// 集成测试例子注意此处不需要 #[cfg(test)]
#[test]
fn test_trait_sample() {trait_sample::do_area();
}总结
1.要想集成测试的测试文件中顺利引用src目录下的代码函数和功能项目结构各层 结构之间必须有完整的引用和指示关系参考上面各mod.rs,至于模块如何组织请 自行查阅教程。 2.main.rs自己引用src下的各层模块时mod.rs中的各层模块定义不是必须的 只要在main.rs中明确各层mod关系即可。 3.cargo.toml中的[lib]定义不是必须的如果使用默认的lib.rs文件则不需要特别指定。rust会默认使用lib.rs作为库文件
更详细的例子可以参考 https://github.com/wang-xuewen/test_rust