Módulo: Testing
Este módulo forma parte del curso de Rust. .
Rust incluye un framework de testing integrado en el lenguaje y en Cargo, sin necesidad de dependencias externas. Los tests son funciones normales marcadas con #[test] que se ejecutan con cargo test.
Tests unitarios
Los tests unitarios conviven con el código que prueban en un módulo tests marcado con #[cfg(test)]. Esto significa que el código de test solo se compila cuando se ejecutan los tests, sin afectar el binario de producción. Con use super::* se importa todo el código del módulo padre.
Macros de aserción
Las macros de aserción son la base del testing en Rust: assert! verifica una condición booleana, assert_eq! verifica igualdad (mostrando ambos valores si falla), assert_ne! verifica desigualdad, y #[should_panic] verifica que el código produce un panic con el mensaje esperado.
Tests de integración
Los tests de integración se colocan en el directorio tests/ en la raíz del proyecto. Prueban la API pública de la biblioteca como la usaría un consumidor externo. Cada archivo en tests/ es un crate de test independiente.
Doc tests
Los ejemplos de código en comentarios de documentación (///) se ejecutan automáticamente como tests con cargo test --doc. Esto garantiza que los ejemplos siempre estén actualizados y sean correctos.
Organización y herramientas
Con #[ignore] se marcan tests lentos o pendientes. cargo test nombre filtra tests por nombre. Para cobertura de código se puede usar cargo-tarpaulin o cargo-llvm-cov. El patrón AAA (Arrange-Act-Assert) organiza cada test en tres fases claras: preparar el estado, ejecutar la acción y verificar el resultado.
Otros módulos de este curso
Todos los módulos del curso
Navega entre los módulos de Rust
Explora más sobre Rust
Descubre más recursos de Rust
Alan Sastre
Ingeniero de Software y formador, CEO en CertiDevs
Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, Rust es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.