0Pricing
Learn Rust Coding · Урок

Интеграционные тесты

Каталог tests

«Интеграционные тесты» — бесплатный урок Learn Rust Coding на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn Rust Coding, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn Rust Coding содержит 4 уроков всего.

Что такое интеграционные тесты?

Интеграционные тесты проверяют публичный API вашего пакета так, как это сделал бы внешний пользователь. Они находятся за пределами src и могут вызывать только публичные элементы.

Каталог tests

Cargo рассматривает каждый файл в каталоге верхнего уровня tests/ как отдельный тестовый пакет. Модуль #[cfg(test)] там не нужен.

  • tests/api.rs
  • tests/parsing.rs

Библиотека для тестирования

Интеграционные тесты предназначены для библиотечного пакета. Предположим, что src/lib.rs предоставляет публичную функцию.

// src/lib.rs
pub fn add(a: i32, b: i32) -> i32 {
    a + b
}

Написание интеграционного теста

В tests/add.rs импортируйте пакет по имени и протестируйте его публичный API. Каждая функция по-прежнему использует #[test].

// tests/add.rs
use my_lib::add;

#[test]
fn adds_two_numbers() {
    assert_eq!(add(2, 2), 4);
}

Только публичные элементы

Поскольку интеграционные тесты являются отдельным пакетом, они могут использовать только публичные элементы (pub). Закрытые функции невидимы — как и для любого реального пользователя.

Запуск интеграционных тестов

cargo test запускает модульные и интеграционные тесты вместе. Каждый файл в каталоге tests/ отображается в выводе как отдельный тестовый двоичный файл.

cargo test

Запуск одного файла

Используйте --test с именем файла (без расширения), чтобы запустить один файл интеграционных тестов.

cargo test --test add

Общие помощники тестов

Чтобы использовать общий код настройки, не превращая его в файл тестов, поместите вспомогательные функции в tests/common/mod.rs. Файлы во вложенных каталогах не считаются тестовыми пакетами.

// tests/common/mod.rs
pub fn setup() {
    // shared setup logic
}

Использование помощника

Объявите модуль и вызывайте его функции из интеграционного теста.

// tests/api.rs
mod common;

#[test]
fn uses_setup() {
    common::setup();
    assert!(true);
}

Модульные и интеграционные тесты

Два взаимодополняющих подхода к тестированию:

  • Модульные тесты находятся в src, могут проверять закрытые элементы, выполняются быстро и точечно
  • Интеграционные тесты находятся в tests/ и проверяют публичный API целиком

Тестирование двоичного пакета

Интеграционные тесты предназначены для библиотек, а не для двоичных пакетов. Обычно логику хранят в src/lib.rs, а тонкий src/main.rs вызывает её, чтобы код был доступен и модульным, и интеграционным тестам.

// src/main.rs
fn main() {
    println!("{}", my_lib::add(2, 3));
}

Быстрая проверка

Где находятся интеграционные тесты и к чему они имеют доступ?

Повторение

Вы изучили интеграционное тестирование:

  • Файлы в tests/ являются отдельными тестовыми крейтами
  • Они импортируют Ваш крейт по имени и тестируют только общедоступные элементы
  • cargo test --test name запускает один файл
  • Общие вспомогательные средства размещаются в tests/common/mod.rs

Часто задаваемые вопросы

Урок «Интеграционные тесты» бесплатный?

Да — полный текст урока «Интеграционные тесты» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn Rust Coding, подпишись на CoddyKit PRO. Курс Learn Rust Coding содержит 4 уроков всего.

Чему я научусь в уроке «Интеграционные тесты»?

Каталог tests Ты практикуешь Learn Rust Coding с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn Rust Coding?

Предыдущий опыт не требуется. Learn Rust Coding на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Интеграционные тесты»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn Rust Coding?

Да. Каждый урок Learn Rust Coding включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Модульные тесты
  2. Интеграционные тесты
  3. Комментарии к документации
  4. Тесты документации
← Назад к Learn Rust Coding