Все, что я должен добавить к ответу @Stephane, это: это зависит от того, как вы вписываете модульное тестирование в свои личные методы разработки. Если у вас есть сквозные интеграционные тесты, включающие реальную базу данных, которую вы создаете и убираете по мере необходимости, при условии, что вы охватили все различные пути через свой код и различные возможности, которые могут возникнуть, когда ваши пользователи взламывают данные сообщений. и т. д. - вы защищены с точки зрения ваших тестов, говорящих вам, работает ли ваша система, что, вероятно, является основной причиной наличия тестов.
Однако я предполагаю, что выполнение каждого из ваших тестов через каждый уровень вашей системы делает разработку через тестирование очень сложной. Необходимость наличия каждого слоя и работы для того, чтобы тест прошел, в значительной степени исключает необходимость тратить несколько минут на написание теста, несколько минут на его прохождение и повторение. Это означает, что ваши тесты не могут подсказать, как ведут себя и взаимодействуют отдельные компоненты; например, ваши тесты не заставят вас делать вещи слабосвязанными. Кроме того, скажем, вы добавляете новую функцию, а в другом месте что-то ломается; Детальные тесты, которые выполняются для компонентов изолированно, значительно упрощают отслеживание того, что пошло не так.
По этим причинам я бы сказал, что стоит «двойную работу» по созданию и поддержке как интеграционных, так и модульных тестов, с высмеиванием или заглушкой вашего DAL в последнем.
person
Steve Wilkes
schedule
04.08.2011