نسخه جدید آکادمی آرتا رسانه را مشاهده میکنید
نسخه جدید آکادمی آرتا رسانه را مشاهده میکنید
در صورتی که در ورود اشکالی داریددر تلگرام پیام دهید تا دسترسی شما بازگردانی شود
پیام در تلگرام

تست و دیباگ در Rust

ایجاد شده توسط دکتر مصطفی جلیلی در آموزش برنامه نویسی Rust 23 ژوئن 2025
اشتراک گذاری

تست و دیباگ در Rust


Rust ابزارهای قدرتمند و داخلی برای نوشتن تست، مدیریت خطا، و دیباگ کد فراهم می‌کند. این بخش به شما کمک می‌کند برنامه‌های Rust را به‌صورت اصولی تست و خطایابی کنید.


نوشتن تست واحد (Unit Tests)


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

تست یکپارچه (Integration Tests)


برای تست‌های یکپارچه، یک پوشه 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 و panic


assert:


برای بررسی صحت مقادیر:


assert!(true);
assert_eq!(2 + 2, 4);
assert_ne!(3, 5);

panic:


برای ایجاد خطای عمدی (مثلاً در مواقع غیرقابل پیش‌بینی):


panic!("خطای جدی رخ داده است");

دیباگ و لاگ‌گیری با log و env_logger


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 لاگ‌گیری و دیباگ اصولی انجام دهیم.

نظرات (0)

اشتراک گذاری

این پست را با دیگران به اشتراک بگذارید

تنظیمات GDPR

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.