Атрибут #[ignore]
Атрибут #[ignore] применяется к тестовой функции
и указывает среде выполнения тестов пропустить эту функцию
при обычном запуске. Такой тест не будет выполнен,
пока не будет указан специальный флаг. Атрибут
не принимает обязательных параметров, но может
содержать необязательную строку с причиной игнорирования.
Синтаксис
#[ignore]
fn test_name()
{
// test body
}
Также можно указать причину игнорирования теста:
#[ignore = "reason"]
fn test_name()
{
// test body
}
Пример
Давайте создадим два теста, один из которых
помечен атрибутом #[ignore]:
fn add(a: i32, b: i32) -> i32
{
a + b
}
#[test]
fn test_add()
{
assert_eq!(add(2, 3), 5);
}
#[test]
#[ignore]
fn test_add_ignored()
{
assert_eq!(add(10, 20), 30);
}
fn main() {}
При запуске команды cargo test будет выполнен
только тест test_add, а тест
test_add_ignored будет пропущен:
running 2 tests
test test_add ... ok
test test_add_ignored ... ignored
test result: ok. 1 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out
Пример
Давайте укажем причину игнорирования теста с помощью строкового параметра:
#[test]
#[ignore = "not implemented yet"]
fn test_future_feature()
{
assert_eq!(1 + 1, 2);
}
fn main() {}
При запуске тестов причина будет отображена в выводе:
running 1 test
test test_future_feature ... ignored, not implemented yet
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out
Пример
Игнорируемые тесты можно запустить принудительно
с помощью флага --ignored:
#[test]
#[ignore]
fn test_manual_run()
{
assert_eq!(5 * 5, 25);
}
fn main() {}
Команда cargo test -- --ignored выполнит
только игнорируемые тесты:
running 1 test
test test_manual_run ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Смотрите также
-
атрибут
test,
который помечает функцию как тестовую -
атрибут
should_panic,
который проверяет, что тест вызывает панику -
макрос
assert!,
который проверяет истинность условия в тесте -
макрос
assert_eq!,
который проверяет равенство двух значений в тесте