***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/
