تست‌های واحد (Unit Tests)

Rust and Cargo با یک چارچوب تست واحد ساده ارائه می شود:

  • Unit tests are supported throughout your code.

  • تست‌های یکپارچه‌سازی از طریق دایرکتوری tests/ پشتیبانی می‌شوند.

تست‌ها با #[test]علامت‌گذاری شده‌اند. تست‌های واحد اغلب در یک ماژول tests تودرتو قرار می‌گیرند و از #[cfg(test)] استفاده می‌کنند تا آنها را به صورت مشروط تنها در هنگام build تست‌ها کامپایل کنند.

fn first_word(text: &str) -> &str {
    match text.find(' ') {
        Some(idx) => &text[..idx],
        None => &text,
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_empty() {
        assert_eq!(first_word("."), ".");
    }

    #[test]
    fn test_single_word() {
        assert_eq!(first_word("سلام"), "سلام");
    }

    #[test]
    fn test_multiple_words() {
        assert_eq!(first_word("سلام دنیا!"), "سلام");
    }
}
  • این به شما امکان می‌دهد تا private helper را آزمایش کنید.
  • ویژگی #[cfg(test)] تنها زمانی فعال است که cargo test را اجرا کنید.
This slide should take about 5 minutes.

تست‌ها را در playground اجرا کنید تا نتیجه‌های آن‌ها را نشان‌دهید.