Testes UnitĂĄrios

Rust e Cargo vĂȘm com uma estrutura de testes unitĂĄrios simples:

  • Testes unitĂĄrios sĂŁo suportados em todo o seu cĂłdigo.

  • Testes de integração sĂŁo suportados atravĂ©s do diretĂłrio tests/.

Testes sĂŁo marcados com #[test]. Testes unitĂĄrios sĂŁo frequentemente colocados em um mĂłdulo aninhado tests, usando #[cfg(test)] para compilĂĄ-los condicionalmente apenas ao construir testes.

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("OlĂĄ"), "OlĂĄ");
    }

    #[test]
    fn test_multiple_words() {
        assert_eq!(first_word("Hello World"), "OlĂĄ");
    }
}
  • Isso permite que vocĂȘ tenha testes unitĂĄrios auxiliares privados.
  • O atributo #[cfg(test)] somente fica ativo quando vocĂȘ executa cargo test.
This slide should take about 5 minutes.

Execute os testes no playground para mostrar seus resultados.