[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-testirovanie-chto-takoe-modulnoe-testirovanie":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},1284,"chto-takoe-modulnoe-testirovanie",42,"testirovanie","Тестирование","✅","Что такое модульное тестирование?","Модульное (unit) тестирование -- проверка корректности отдельных модулей (классов, методов) в изоляции от внешних зависимостей, которые заменяются моками или стабами.\n\n> **Аналогия из жизни:** проверка отдельной детали на заводе перед сборкой. Каждый болт тестируется отдельно от всего механизма -- если он бракованный, это выясняется до того, как машина будет собрана.\n\n### Характеристики хороших unit-тестов (F.I.R.S.T.)\n\n| Принцип | Значение |\n|---------|----------|\n| Fast | Выполняются за миллисекунды |\n| Isolated | Не зависят от других тестов, БД, сети |\n| Repeatable | Одинаковый результат при каждом запуске |\n| Self-validating | Pass\u002Ffail без ручной проверки |\n| Timely | Написаны вовремя (в идеале -- до или одновременно с кодом) |\n\n### Пример\n\n```java\nclass CalculatorTest {\n\n    @Test\n    @DisplayName(\"Сложение двух положительных чисел\")\n    void shouldAddTwoNumbers() {\n        Calculator calc = new Calculator();\n        assertEquals(5, calc.add(2, 3));\n    }\n\n    @Test\n    @DisplayName(\"Деление на ноль бросает исключение\")\n    void shouldThrowOnDivisionByZero() {\n        Calculator calc = new Calculator();\n        assertThrows(ArithmeticException.class, () -> calc.divide(10, 0));\n    }\n}\n```\n\n### Ключевые принципы\n\n- Unit-тесты проверяют логику, а не инфраструктуру\n- Зависимости заменяются через Mockito\u002Fstub -- тест должен быть изолирован\n- Один тест = один сценарий; имя теста описывает ожидание\n- Тестируйте публичный API, не приватные методы\n\n### Частые ошибки\n\n- Тестирование приватных методов -- тестируйте публичный API, не реализацию\n- Тесты, зависящие от порядка выполнения -- каждый тест должен быть независим\n- Один assert на весь класс -- один тест проверяет одно поведение\n\n### Как используется в 2026\n\n- JUnit 5 + Mockito + AssertJ -- стандартный стек для unit-тестов\n- Минимальное время выполнения -- сотни unit-тестов за секунды\n\n> **На собеседовании:** интервьюер ожидает не просто определение, а понимание принципа F.I.R.S.T. и умение объяснить, почему unit-тест должен быть изолирован. Частая ошибка -- путать unit-тесты с интеграционными или говорить, что unit-тест может обращаться к БД.","","junior",[15],"testing",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Что такое модульное тестирование? — Gymterview","Модульное (unit) тестирование -- проверка корректности отдельных модулей (классов, методов) в изоляции от внешних зависимостей, которые заменяются моками или ст","Модульное (unit) тестирование -- проверка корректности отдельных модулей (классов, методов) в изоляции от внешних зависи",[15,13],"Модульное (unit) тестирование -- проверка корректности отдельных модулей (классов, методов) в изоляции от внешних зависимостей, которые заменяются моками или стабами.",true]