Недавно я изучал TDD, посещал конференцию и пробовал несколько тестов, и уже на 100% продаю, мне очень нравится TDD.
В результате я поднял это со своими старшими, и они готовы дать ему шанс, поэтому они поручили мне придумать способ внедрения TDD в разработку нашего корпоративного продукта.
Проблема заключается в том, что наша система развивается со времен VB6 до .NET и реализует множество унаследованных технологий и некоторые далеко не лучшие методы разработки, то есть много бизнес-логики в коде ASP.NET позади и на стороне клиента script. Однако самая большая проблема заключается в том, как наши классы тесно связаны с доступом к базе данных; свойства, методы, конструкторы - обычно имеет некоторый доступ к базе данных в той или иной форме.
Мы используем внутренний генератор кода доступа к данным, который создает sqlDataAdapters, который дает нам весь доступ к базе данных, который нам когда-либо понадобится, что помогает нам развиваться очень быстро, однако классы в нашем бизнес-слое очень тесно связаны с этими данными layer - мы даже не близки к реализации какой-либо формы дизайна репозитория. Это и вышеперечисленные проблемы создали мне всевозможные проблемы.
Я попытался разработать некоторые модульные тесты для некоторых существующих классов, которые я уже написал, но тесты требуют LOT дольше, чем нужно, поскольку требуется доступ к db, не говоря уже о том, что мы используем структуру кэширования MS Enterprise. Я вынужден подделать httpcontext для моих тестов, чтобы успешно работать, что нецелесообразно. Кроме того, я не вижу, как использовать TDD для управления дизайном любых новых классов, которые я пишу, поскольку они должны быть так тесно связаны с базой данных... help!
Из-за архитектуры системы, похоже, я не могу реализовать TDD без какого-либо реального взлома, который в моих глазах просто побеждает цель TDD и огромные преимущества, которые приходят с.
Есть ли у кого-нибудь предложения, как я могу реализовать TDD с ограничениями, с которыми я связан? Или мне нужно подтолкнуть шаблон дизайна репозитория к моим старшим горлам и сказать им, что мы либо меняем нашу методологию архитектуры/разработки, либо вообще забываем о TDD?:)
Спасибо