Поскольку тестирование программного обеспечения является огромной задачей, вы делите его на несколько задач, чтобы сделать его управляемым.В модульном тестировании вы сосредотачиваетесь на поиске ошибок, которые можно найти, рассматривая отдельные части программного обеспечения изолированно.То есть юнит-тестирование направлено на поиск особого рода ошибок.Например, интеграционное тестирование нацелено на ошибки другого типа, которые не могут быть обнаружены модульным тестированием.
Сосредоточение внимания на поиске ошибок в изолированном программном обеспечении означает , а не Вы действительно должны технически изолировать эту часть программного обеспечения, высмеивая зависимости.В наши дни фреймворк-фреймворки делают его довольно простым (хотя уровень сложности варьируется в зависимости от языка программирования).Тем не менее, издевательство всегда требует дополнительных усилий, а также имеет свои недостатки.Например, тесты, использующие макетирование, более тесно связаны с реализацией кода и, следовательно, с большей вероятностью потребуют сопровождения, если детали реализации меняются.
Следовательно, имитация должна выполняться только при наличии веской причины для симуляции.На это есть веские причины:
- Вы не можете легко заставить зависимый компонент (DOC) вести себя так, как предназначено для ваших тестов.
- Вызывает ли вызов DOC какое-либо недерминистское поведение(дата / время, случайность, сетевые подключения)?
- Установка теста слишком сложна и / или требует интенсивного обслуживания (например, необходимость во внешних файлах)
- Исходный DOC создает проблемы с переносимостью для вашеготестовый код.
- Вызывает ли использование исходного DOC неприемлемо длительное время сборки / выполнения?
- Имеет ли проблемы со стабильностью (зрелостью) DOC, которые делают тесты ненадежными, или, что еще хуже, DOC недаже доступны еще?
Например, вы (обычно) не высмеиваете стандартные библиотечные математические функции, такие как sin
или cos
, потому что у них нет ни одной из вышеупомянутых проблем.То же самое может иметь место, в вашем случае для Vec2F
и Shape
, но вам придется судить об этом самостоятельно.Приведенный выше список критериев должен вам помочь.