Интеграционные тесты
Каталог 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.rstests/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 — локальная установка не требуется.
Все уроки этого курса
- Модульные тесты
- Интеграционные тесты
- Комментарии к документации
- Тесты документации