Base/Knowledges/Библиотека/Книги/Принципы юнит-тестирования.md

3.5 KiB
Raw Blame History

Тип, Статус, Название, Автор, Количество страниц, Прогресс, Формат, Обложка, Начата, Закончена, Оценка, Сложность, Теги, Категории, Источник, Ссылка
Тип Статус Название Автор Количество страниц Прогресс Формат Обложка Начата Закончена Оценка Сложность Теги Категории Источник Ссылка
Книга Прочитано Принципы юнит-тестирования
Владимир Хориков
320 320 Бумажная Библиотека/Книги/covers/unit-testing.jpg 2025 2025 9 7/10
it
programming
testing
tdd
разработка программного обеспечения
тестирование

!covers/unit-testing.jpg

Принципы юнит-тестирования

📖 О книге

Одна из лучших книг о юнит-тестировании на практике. Владимир Хориков (Microsoft MVP) разбирает не просто «как писать тесты», а «что делает тест хорошим». Центральная идея — тесты должны проверять поведение, а не реализацию. Книга охватывает стили тестирования, работу с моками, архитектуру тестируемого кода и интеграционные тесты. Ориентирована на C#/.NET, но принципы универсальны.


🧠 Ключевые идеи

  • Четыре свойства хорошего теста: защита от регрессий, устойчивость к рефакторингу, быстрая обратная связь, удобство сопровождения — и между ними неизбежный компромисс
  • Тестировать поведение, не реализацию: тест, завязанный на детали реализации, хрупок — он будет ломаться при рефакторинге, не обнаруживая реальных багов
  • Моки — инструмент, не цель: злоупотребление моками приводит к тестам, которые проверяют взаимодействие объектов вместо бизнес-результата
  • Классическая vs лондонская школа TDD: классики тестируют единицы поведения, лондонцы — единицы кода; автор отдаёт предпочтение классическому подходу
  • Интеграционные тесты дополняют, не заменяют: они покрывают то, что юнит-тесты не могут — взаимодействие с БД, файловой системой, внешними сервисами

💬 Важные цитаты

«Тест, который не может сломаться при наличии бага, бесполезен. Тест, который ломается без бага, вреден.»

«Цель юнит-тестирования — обеспечить устойчивый рост проекта, а не максимальное покрытие кода.»


💡 Как применить в моих проектах


🔗 Связанные заметки