Я думаю, что одним из основных препятствий является то, как от вас требуется изменить способ мышления.
Прежде, чем я попробовал TDD, я бы создал класс, скажем Employee, затем я бы заглушил такие вещи, как FirstName, LastName, Email и т. Д. Затем я бы написал некоторую логику и забыл, что пропустил несколько полей или что-то еще. А до того, как я узнал об этом, у меня был довольно сложный класс, не зная, были ли когда-нибудь необходимы эти поля.
Кроме того, это полное изменение от того, как мы привыкли писать программы. Мы привыкли писать программы, так как получаем функции от тех, кто подписывает наши чеки Мы не привыкли писать код, который не компилируется, не компилируется, а затем заставляет работать наши тесты.
В первый раз, когда вы делаете это, вы чувствуете себя немного ... очень глупо и глупо. Почему я умышленно делаю код неудачным? Кажется нелогичным философия «заставь это работать», которой нас так долго учили.
Несколько причин, почему это не удалось до сих пор, где я работаю:
- Большинство проектов, над которыми мы работаем, - это старые приложения. Не до .NET, но .NET 2.0, а в некоторых случаях .NET 1.0.
- Некоторые из этих проектов не очень хорошо продуманы, либо потому, что технологии не было в 1.0, либо она была построена быстро, потому что им нужно что-то СЕЙЧАС ..
- Как указал Джон, некоторые вещи все еще являются PIA (болью в - ***) для модульного тестирования, пользовательского интерфейса, базы данных и т. Д.
- Дорогие инструменты. Если вам разрешено использовать только инструменты Microsoft, стоит сделать это «правильным способом». Мы используем Resharper, так что это действительно не проблема.
- Время. Я в команде из трех парней, поддерживающих отдел из 30 человек. Нас считают накладными, и многие наши разработки состоят из систем сопряжения вместе