Команда cargo test
Команда cargo test запускает все тесты,
определённые в проекте Rust. Она компилирует
код в режиме тестирования и выполняет функции,
помеченные атрибутом #[test]. Команда
принимает различные флаги и фильтры, позволяющие
управлять запуском тестов: выбирать конкретные
тесты по имени, показывать вывод, запускать
тесты параллельно или последовательно.
Синтаксис
cargo test [OPTIONS] [TESTNAME] [-- [ARGS]]
Пример
Давайте создадим простой проект с тестами
и запустим команду cargo test.
Сначала определим функцию и тест в файле
src/lib.rs:
pub fn add(a: i32, b: i32) -> i32
{
a + b
}
#[cfg(test)]
mod tests
{
use super::*;
#[test]
fn test_add()
{
assert_eq!(add(2, 3), 5);
}
#[test]
fn test_add_negative()
{
assert_eq!(add(-1, -1), -2);
}
}
Теперь запустим команду cargo test
в терминале:
$ cargo test
Результат выполнения команды:
running 2 tests
test tests::test_add ... ok
test tests::test_add_negative ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Пример
Давайте запустим только один конкретный тест, передав его имя в качестве аргумента:
$ cargo test test_add_negative
Результат выполнения команды:
running 1 test
test tests::test_add_negative ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 1 filtered out
Пример
Давайте запустим тесты с флагом --show-output,
чтобы увидеть вывод функции println!
внутри тестов:
#[test]
fn test_with_output()
{
println!("running test_with_output");
assert_eq!(2 + 2, 4);
}
Запустим команду с флагом:
$ cargo test test_with_output -- --show-output
Результат выполнения команды:
running 1 test
test test_with_output ... ok
successes:
---- test_with_output stdout ----
running test_with_output
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Смотрите также
-
атрибут
test,
который помечает функцию как тестовую -
атрибут
cfg(test),
который включает модуль только при тестировании -
макрос
assert_eq!,
который проверяет равенство двух значений -
атрибут
should_panic,
который проверяет, что тест вызывает панику