Pruebas

¡Como sabemos, las pruebas son parte integral de cualquier software! Rust tiene soporte de primera clase para pruebas unitarias y de integración (consulta este capítulo en el lenguaje de programación Rust).

En los capítulos de prueba vinculados anteriormente, vemos cómo escribir pruebas unitarias y pruebas de integración. Organizacionalmente, podemos colocar pruebas unitarias en los módulos que prueban y pruebas de integración en su propio directorio tests/:

foo
├── Cargo.toml
├── src
│   └── main.rs
└── tests
    ├── mi_prueba.rs
    └── mi_otra_prueba.rs

Cada archivo en tests es una prueba de integración independiente.

¡cargo naturalmente proporciona una manera fácil de ejecutar todas sus pruebas!

$ cargo test

Deberías ver un resultado como este:

$ cargo test
   Compiling blah v0.1.0 (file:///nobackup/blah)
    Finished dev [unoptimized + debuginfo] target(s) in 0.89 secs
     Running target/debug/deps/blah-d3b32b97275ec472

running 3 tests
test test_bar ... ok
test test_baz ... ok
test test_foo_bar ... ok
test test_foo ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

También puedes ejecutar pruebas cuyo nombre coincida con un patrón:

$ cargo test test_foo
$ cargo test test_foo
   Compiling blah v0.1.0 (file:///nobackup/blah)
    Finished dev [unoptimized + debuginfo] target(s) in 0.35 secs
     Running target/debug/deps/blah-d3b32b97275ec472

running 2 tests
test test_foo ... ok
test test_foo_bar ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out

Una advertencia: Cargo puede ejecutar múltiples pruebas al mismo tiempo, así que asegúrate de que no compitan entre sí. Por ejemplo, si todos a emiten un archivo, debe hacer que escriban en archivos diferentes.