***Unit - тесты в C#*** **Модульное тестирование, или юнит-тестирование** (англ. unit testing) — процесс в программировании, позволяющий проверить на корректность отдельные модули исходного кода программы. Идея состоит в том, чтобы писать тесты для каждой нетривиальной функции или метода. Это позволяет достаточно быстро проверить, не привело ли очередное изменение кода к регрессии, то есть к появлению ошибок в уже оттестированных местах программы, а также облегчает обнаружение и устранение таких ошибок. ![](Aspose.Words.43f70f0f-ae8d-4ff9-8b4e-78d2d8d62357.001.jpeg) Зачем проводится unit-тестирование Основной смысл модульного тестирования заключается в том, чтобы избежать накапливания ошибок в будущем, а также исключить регрессию уже отлаженных модулей. Например, у вас есть в целом готовое приложение, к которому необходимо добавить несколько новых функций или процессов. Если сначала выполнить интеграцию компонентов, а потом протестировать полностью «собранное» ПО, то ошибки в дополнениях могут привести к нестабильной работе всего приложения. Чтобы этого не произошло, легче протестировать добавляемые функции изолированно, а после устранения всех багов интегрировать их в программу. Таким образом, unit-тестирование решает следующие задачи: - поиск и исправление ошибок на ранних стадиях разработки программного продукта и, следовательно, снижение затрат в дальнейшем; - лучшее понимание разработчиками базового кода проекта, более простая и быстрая корректировка продукта; - повторное использование кода, в том числе с переносом (вместе с тестами) в другие продукты; - использование юнит-тестов как проектной документации, по которой разработчики, не знакомые с кодом, могут понять принцип его работы. **Преимущества unit-тестирования** Применять модульное тестирование при разработке программных продуктов рекомендуется по следующим причинам: - **Простота.** Написать тест для отдельного модуля проще, чем для приложения в целом. Соответственно, если нужно проверить не всю программу, а лишь ее часть (например, вышедшее обновление или патч), то можно использовать модульное тестирование, предварительно изолировав проверяемый фрагмент кода. Хотя интеграционное тестирование нужно будет провести в любом случае. - **Информативность.** Хорошо составленный тест помогает разработчикам понять API приложения, функционал модуля, особенности его использования. Особенно это полезно в том случае, если при работе над проектом произошла смена ответственных за разработку и проверку специалистов. - **Параллельная разработка.** Модульное тестирование позволяет проверить работу одного компонента приложения независимо от других. Благодаря этому можно параллельно разрабатывать различные программные модули, тем самым сократив время на создание и отладку продукта. - **Возможность повторного использования.** Создав однажды тест для проверки отдельного модуля, разработчик может вернуться к нему позднее, чтобы протестировать работу компонента еще раз. Регрессионное тестирование состоит в написании контрольных примеров для всех функций, которые помогают выявить ошибки, вызванные внесенными изменениями. **Недостатки unit-тестирования** Несмотря на свои достоинства, модульное тестирование не является панацеей от всех болезней кода: - Модульное тестирование не гарантирует, что будут найдены все ошибки. Причина в том, что даже в относительно простых программах невозможно предугадать все сценарии их выполнения. - Unit-тестирование применяется к изолированным фрагментам кода, поэтому может выявить только ошибки проверяемого модуля. Оно не способно показать баги, возникающие при интеграции модуля с другими компонентами приложения. Также unit-тестирование не способно выявить системные ошибки продукта в целом. **Создание Unit-тестов** Для создания тестов нам нужен проект: 1.Создаем консольное приложение либо же приложение с визуальным интерфейсом ![](Aspose.Words.43f70f0f-ae8d-4ff9-8b4e-78d2d8d62357.002.png) 2. Вводим название нашего проекта и указываем путь к нему ![](Aspose.Words.43f70f0f-ae8d-4ff9-8b4e-78d2d8d62357.003.png) 3.Пишем программу для тестирования ![](Aspose.Words.43f70f0f-ae8d-4ff9-8b4e-78d2d8d62357.004.png) 4.Для создания Unit-теста надо нажать ПКМ по нашей процедуре и выбрать **Create Unit Tests** ![](Aspose.Words.43f70f0f-ae8d-4ff9-8b4e-78d2d8d62357.005.png) 5.Нажимаем ОК ![](Aspose.Words.43f70f0f-ae8d-4ff9-8b4e-78d2d8d62357.006.png) 6.Открывается окно для создания теста ![](Aspose.Words.43f70f0f-ae8d-4ff9-8b4e-78d2d8d62357.007.png) 7.Пишем код для нашего теста и запускаем его ![](Aspose.Words.43f70f0f-ae8d-4ff9-8b4e-78d2d8d62357.008.png) Как мы видим тест прошёл удачно и программа работает правильно. **Список литературы:** https://blog.skillfactory.ru/glossary/unit-testirovanie/