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 لاگگیری و دیباگ اصولی انجام دهیم.
برای شخصیسازی محتوا و تبلیغات، کوکیها و فناوریهای مشابه در سایتهای ما استفاده میشوند. میتوانید جزئیات بیشتر را پیدا کنید و تنظیمات شخصی خود را در زیر تغییر دهید. با کلیک بر روی "باشه" یا با کلیک بر روی هر محتوایی در سایتهای ما، شما با استفاده از این کوکیها و فناوریهای مشابه موافقت میکنید.
When you visit any of our websites, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and manage your preferences. Please note, that blocking some types of cookies may impact your experience of the site and the services we are able to offer.