РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
807 of 1245 menu

Атрибут #[test]

Атрибут #[test] применяется к функции и указывает компилятору и инструменту cargo test, что данная функция является тестом. Такая функция не принимает параметров и не возвращает значения. Атрибут позволяет автоматически обнаруживать и запускать тесты, проверяя корректность работы кода.

Синтаксис

#[test] fn test_name() { // test body }

Пример

Давайте создадим простой тест, который проверяет, что сумма двух чисел равна ожидаемому значению:

#[test] fn test_sum() { let res = 2 + 3; assert_eq!(res, 5); } fn main() { println!("Run tests with cargo test"); }

Результат выполнения команды cargo test:

running 1 test test test_sum ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

Пример

Давайте создадим тест, который проверяет равенство строк:

#[test] fn test_string() { let res = "abcde".contains("bcd"); assert!(res); } fn main() { println!("Run tests with cargo test"); }

Результат выполнения команды cargo test:

running 1 test test test_string ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

Пример

Давайте создадим падающий тест, чтобы увидеть, как выглядит сообщение об ошибке:

#[test] fn test_fail() { let res = 2 + 2; assert_eq!(res, 5); } fn main() { println!("Run tests with cargo test"); }

Результат выполнения команды cargo test:

running 1 test test test_fail ... FAILED failures: ---- test_fail stdout ---- assertion `left == right` failed left: 4 right: 5 failures: test_fail test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out

Смотрите также

  • атрибут should_panic,
    который проверяет, что тест вызывает панику
  • атрибут ignore,
    который позволяет пропустить выполнение теста
  • макрос assert!,
    который проверяет истинность выражения
  • макрос assert_eq!,
    который проверяет равенство двух значений
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить