Rust ابزارهای قدرتمند و داخلی برای نوشتن تست، مدیریت خطا، و دیباگ کد فراهم میکند. این بخش به شما کمک میکند برنامههای Rust را بهصورت اصولی تست و خطایابی کنید.
Rust تستهای واحد را داخل همان فایل سورس (معمولاً در پایین) تعریف میکند و آنها را با ویژگی #[cfg(test)] از کد اصلی جدا نگه میدارد.
مثال:
fn sum(a: i32, b: i32) -> i32 {a + b}#[cfg(test)]mod tests {use super::*;#[test]fn test_sum() {assert_eq!(sum(2, 3), 5);}}
برای اجرای تستها:
cargo test
برای تستهای یکپارچه، یک پوشه tests/ در کنار src/ بسازید. هر فایل در آن به عنوان یک crate جداگانه تست اجرا میشود.
ساختار:
my_project/├── src/│ └── lib.rs└── tests/└── integration_test.rs
در integration_test.rs:
use my_project::sum;#[test]fn test_integration_sum() {assert_eq!(sum(5, 5), 10);}
assert:
برای بررسی صحت مقادیر:
assert!(true);assert_eq!(2 + 2, 4);assert_ne!(3, 5);
panic:
برای ایجاد خطای عمدی (مثلاً در مواقع غیرقابل پیشبینی):
panic!("خطای جدی رخ داده است");
Rust ابزارهای logging سبکی دارد:
نصب:
در Cargo.toml:
[dependencies]log = "0.4"env_logger = "0.10"
استفاده:
use log::{info, warn};fn main() {env_logger::init();info!("این یک پیام اطلاعرسانی است");warn!("این یک پیام هشدار است");}
برای دیدن لاگها، متغیر محیطی تنظیم کنید:
RUST_LOG=info cargo run
در این بخش یاد گرفتیم:
- چطور تستهای واحد و یکپارچه بنویسیم.
- از ابزارهایی مثل assert و panic برای بررسی صحت و مدیریت خطا استفاده کنیم.
- و چطور با log و env_logger لاگگیری و دیباگ اصولی انجام دهیم.