Rullst AcademyRullst Academy/Lição
Rust II: dados, escolhas e confiança · Lição 11 / 12

Testes que encontram defeitos

Um teste útil verifica uma regra, incluindo o ponto onde ela muda. Vamos tentar encontrar um defeito de uma única letra.

Trilhas de aprendizado14 min

Vamos descobrir juntos

  1. 1

    #[test] marca funções executadas por cargo test. #[cfg(test)] inclui o módulo apenas na compilação de testes. use super::* permite aos testes acessar os itens do módulo pai.

  2. 2

    assert! exige true; assert!(!valor) exige false. assert_eq! compara valores. Uma falha deve descrever uma expectativa derivada da regra, não copiar a mesma conta da implementação.

  3. 3

    Com 3 disponíveis, pedidos 2 e 3 são permitidos; 4 não. Pedir zero também é inválido. Esses casos exercitam abaixo, exatamente no limite, acima e um valor proibido.

  4. 4

    O cenário 2 troca <= por < e recusa um pedido válido de 3. Execute os testes após a mudança: boundary deve falhar. Restaurar a regra e ver o teste passar demonstra que ele detecta esse defeito específico.

DA LIÇÃO PARA A PRÁTICA

Guia para acompanhar no seu ritmo

Leia os passos antes de usar a referência abaixo. Comandos são executados no terminal do sistema indicado; o cadastro acontece no site oficial. Os exercícios da Rullst Academy são treino e não verificam sua instalação ou conta externa.

fn can_take(available: u16, request: u16) -> bool {
    request > 0 && request <= available
}
fn main() {
    println!("{} {} {}", can_take(3, 2), can_take(3, 3), can_take(3, 4));
}
#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn boundary() {
        assert!(can_take(3, 2));
        assert!(can_take(3, 3));
        assert!(!can_take(3, 4));
    }
    #[test]
    fn rejects_zero() { assert!(!can_take(3, 0)); }
}

Links oficiais e próximo passo

✦
SUA MISSÃO

Escrever testes de fronteira e mostrar que eles detectam uma alteração errada.

Agora é a sua vez

Oficina de descobertas

Leia, preveja, investigue

Preveja antes de mostrar. Este painel revela resultados preparados, não compila seu código. Erros de compilação são resumidos; o texto exato pode variar com a versão do compilador.
Mini experimento

Simulação didática: compare os cartões e confira suas previsões. O navegador não está compilando Rust nem iniciando um servidor.

fn can_take(available: u16, request: u16) -> bool {
    request > 0 && request <= available
}
fn main() {
    println!("{} {} {}", can_take(3, 2), can_take(3, 3), can_take(3, 4));
}
#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn boundary() {
        assert!(can_take(3, 2));
        assert!(can_take(3, 3));
        assert!(!can_take(3, 4));
    }
    #[test]
    fn rejects_zero() { assert!(!can_take(3, 0)); }
}
Monte suas respostas e confira quando estiver pronto.
Uma pausa para entender

Todos os testes passando provam ausência de defeitos?

Preciso de uma pista

Um conjunto finito de exemplos não cobre automaticamente todos os comportamentos.

Carregando sua jornada…

Leve com você

Execute cargo test. Troque <= por <, confirme a falha e restaure. Acrescente os casos (0, 1) e (20, 20), explicando qual regra cada um protege.

RUST II · .rs

Sua bancada Rust II

Leia, preveja e responda aqui. Para compilar de verdade, extraia o ZIP da atividade em uma pasta nova, abra o terminal ao lado de Cargo.toml e use os comandos abaixo. Rust e as ferramentas do seu sistema precisam estar instalados.

cargo check --offline
cargo test --offline
cargo run --offline
Meus arquivos e GitHub

O editor abaixo salva um rascunho neste navegador e permite baixar ou publicar seu .rs. Para executá-lo no projeto, salve o arquivo editado como src/main.rs. O ZIP contém a versão inicial; os resultados preparados não mudam com suas edições. A avaliação online não comprova execução local.

No seu ritmo

Meus arquivos e GitHub

Toda lição pode virar um registro seu: código, anotações ou um plano de prática. Guardar um arquivo no GitHub é opcional e não altera seu XP.

Manual do aluno

O editor e os downloads abrem quando esta lição estiver liberada para sua conta. Confira o acesso abaixo ou volte ao mapa da trilha.

Conferindo seu acesso à lição…

Rullstpetbot

A IA pode errar. Confira no material da lição.