2011-02-06 3 views
3

Я начинаю новый проект, и я хочу использовать Test Driven Development, но у меня возникли проблемы с пониманием того, как писать тесты, когда у вас нет модели данных или интерфейсов.Как применить Test Driven Development к новому проекту?

IMO, модель данных и интерфейсы должны быть написаны. Затем необходимо выполнить пару функций для проверки модели данных, а интерфейсы «созрели». (иначе изменения либо будут минимальными). Затем я буду писать модульные тесты. После этого шага, я думаю, вы можете следить за TDD.

Правильно ли это?

На стороне примечания, похоже, некоторые из этих новых методов, таких как TDD, не учитывают и не документируют, что делать для новых проектов.

+3

Новый проект - самое легкое время для применения TDD. –

+0

Я бы сказал, что заявление очень субъективно в зависимости от вашего опыта работы с TDD :) – kevindaub

+0

Смотря на пустой экран, не имея представления о том, как действовать дальше, не самое легкое время для * изучения * TDD. Посмотрите демонстрационную версию скринкаста ниже. –

ответ

4

Как говорится, «начните с отказа от единичного теста».

  • Вам не нужна модель данных до тех пор, пока она не понадобится, чтобы исправить неисправный модульный тест.
  • Вам не нужны интерфейсы, пока они необходимы (исправить тест неисправного блока)

Может быть, если вы привести пример приложения, мы можем помочь вам найти первые несколько провала попытки тестов.

+0

Я все еще немного шаткий, как вы пишете единичный тест на что-то, когда у вас нет объектов для установки и проверки. Означает ли это, что вы пишете класс скелета, а затем записываете единичный тест для этого скелета? – kevindaub

+2

@daub: нет, вы пишете тест перед классом скелета. Вы создаете куски класса только тогда, когда тест им нужен. –

+0

Я думаю, именно поэтому они называют это «управляемой» разработкой. Вы знаете, с тестами, заставляющими вас писать код. – EnabrenTane

2

Вы получаете общее представление о классах, в которых вы нуждаетесь, тогда вы пишите тест, смотрите, как он терпит неудачу, заставляют его проходить и повторять. вы можете понять, что вам нужно перемещать методы или создавать новые классы, но это часть процесса.

Смотреть это видео для живой демонстрации http://katas.softwarecraftsmanship.org/?p=80

+0

Хотя скринкаст был интересен, язык, который он использовал, немного меня отбросил. – kevindaub

+0

@ daub815 У него есть тот же проект на нескольких языках, скремблированный. – EnabrenTane

3

TDD не является многодневный процесс написания тестов, то написание кода, чтобы сделать эти тесты пройдены. TDD предполагает одновременное включение усилий по тестированию с помощью усилий по разработке.

Написав несколько тестов, чтобы обратиться к потенциальному классу, тогда написать класс будет примером параллельного усилия. Написание тестов для обращения к модулю, состоящему из множества классов, а затем написание классов для прохождения этих тестов не является параллельным усилием, и его следует избегать, поскольку рефакторинг неизбежен на протяжении всего развития.

+0

Я думаю, что это ключевой момент. Это очень итеративный и интерактивный процесс. Все дело в коротких замыканиях. –