Тесты, бенчмарки, профилирование
Модульные, интеграционные и документационные тесты, should_panic, criterion, профилирование, фаззинг.
Тема объясняет встроенную систему тестирования Cargo и инструменты измерения производительности. Вопросы о модульных и интеграционных тестах проверяют требования к функции #[test], доступ тестового модуля к приватным элементам, что видит интеграционный тест из каталога tests/, где держать общий код, как cfg(test) влияет на обычную сборку, а также параллельный запуск, фильтрацию по имени, #[ignore] и сводку cargo test. Раздел о документационных тестах разбирает, как rustdoc превращает пример в отдельный крейт, как работают скрытые строки, атрибуты блока кода вроде compile_fail, оператор ? в примере и почему у бинарного крейта такие тесты не запускаются. Отдельный раздел посвящён #[should_panic] с параметром expected, тестам, возвращающим Result, и сообщениям assert! и assert_eq!. Разделы о бенчмарках, профилировании и фаззинге (fuzzing) объясняют, почему #[bench] недоступен на стабильном компиляторе, как подключить criterion, зачем нужен black_box, как читать отчёт и flame graph, какую сборку профилировать и что находит cargo fuzz.
44 вопроса: базовый уровень — 21, средний — 20, углублённый — 3. 6 справок, 8 источников.
Разделы
- Модульные и интеграционные тесты
- Документационные тесты
#[should_panic], тесты сResult- Бенчмарки и
criterion - Профилирование:
perf, flamegraph - Фаззинг
Предыдущая тема: Макросы · Следующая тема: Память и раскладка типов