Boas Práticas de Testes
Testes rápidos, determinísticos e significativos dão às equipes Rust confiança para refatorar sem falhas na CI ou duplicação de incidentes de produção.
Busque em todas as páginas da documentação
Testes rápidos, determinísticos e significativos dão às equipes Rust confiança para refatorar sem falhas na CI ou duplicação de incidentes de produção.
#[cfg(test)] mod tests. API privada testada ao lado da implementação.tests/ por área de comportamento. Um arquivo por recurso, não um mega-arquivo.main enxuto, lib robusto.tests/common/. Sem copiar e colar configuração de HTTP/DB.cargo test padrão. Mocks, fakes ou testcontainers atrás de #[ignore].tokio::time::pause em vez de sleep em testes assíncronos. Tempo mais rápido e determinístico.serial_test. Testes paralelos não devem compartilhar mut statics.proptest-regressions. Falhas reproduzíveis.mockall ou fakes manuais (Mocking & Test Doubles).cenario_resultado_esperado. Nomes de filtro cargo test legíveis.cargo nextest run --workspace na CI. Mais rápido que test simples em repositórios grandes.clippy -D warnings antes de mesclar. Testes passam no mesmo perfil dos desenvolvedores.#[tokio::test] com o sabor correto. current_thread apenas quando !Send for necessário.ServiceExt::oneshot. Sem portas aleatórias na camada de unidade.#[sqlx::test] ou transações revertidas para DB. Sem linhas remanescentes entre testes.DATABASE_URL). README para E2E local.Um caminho feliz de integração, uma falha de autenticação/validação, testes unitários na lógica de domínio extraída.
Algumas invariantes fortes por parser/serializador; nem toda função precisa de proptest.
Corrija ou isole com proprietário e prazo; nunca ignore indefinidamente no main.
Sim, através de testes unitários no mesmo módulo; prefira testar via API pública quando o comportamento for um contrato estável.
Mock/fake para velocidade; testcontainers para peculiaridades de dialeto SQL no job noturno.
cargo test --doc --workspace no PR se a documentação faz parte do contrato da API.
assert_cmd ou snapshot de --help; integração com diretórios temporários para saída de arquivo.
Quando o comportamento for removido; não mantenha testes para recursos excluídos "por via das dúvidas".
Barreira mais baixa aceitável para "wiring" fino; barreira alta em módulos de domínio e segurança.
Rotação da equipe; vincule correções de testes instáveis à mesma sprint do trabalho de recursos que toca essa área.
Versões de Stack: Esta página foi escrita para Rust 1.97.0 (edição 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4, e Polars 0.46+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026