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

Модуль tests

Модуль tests - это соглашение об именовании модуля, который содержит модульные тесты. Обычно он объявляется с атрибутом #[cfg(test)], что позволяет компилировать этот модуль только при запуске тестов, а не при обычной сборке проекта. Внутри модуля tests размещаются функции с атрибутом #[test], которые и являются тестовыми случаями. Такой подход позволяет тестировать приватные функции и структуры, так как модуль tests является дочерним по отношению к тестируемому модулю.

Синтаксис

#[cfg(test)] mod tests { use super::*; #[test] fn test_name() { // test body } }

Пример

Давайте создадим функцию сложения и протестируем её с помощью модуля tests:

fn add(a: i32, b: i32) -> i32 { a + b } #[cfg(test)] mod tests { use super::*; #[test] fn test_add() { let res = add(2, 3); assert_eq!(res, 5); } } fn main() { println!("{}", add(2, 3)); }

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

5

Пример

Давайте протестируем функцию, возвращающую строку, и выведем результат в тесте:

fn greet() -> String { String::from("abcde") } #[cfg(test)] mod tests { use super::*; #[test] fn test_greet() { let res = greet(); println!("{}", res); assert_eq!(res, "abcde"); } } fn main() { println!("{}", greet()); }

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

"abcde"

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

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