Модульні тести

Rust і Cargo постачаються з простим фреймворком для модульного тестування:

  • Модульні тести підтримуються у всьому коді.

  • Тести інтеграції підтримуються через каталог tests/.

Тести позначаються #[test]. Модульні тести часто розміщують у вкладеному модулі tests, використовуючи #[cfg(test)] для їх умовної компіляції лише під час збирання тестів.

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("Привіт, світ!"), "Привіт");
    }
}
  • Це дозволяє тестувати приватних помічників.
  • Атрибут #[cfg(test)] активний лише тоді, коли ви запускаєте cargo test.
This slide should take about 5 minutes.

Запустіть тести на майданчику, щоб показати їхні результати.