Итак, я уже тестировал отдельные модули и имел опыт написания тестов, но я не полностью использовал TDD в качестве инструмента разработки.
Мой текущий проект заключается в повторной работе существующей системы, которая генерирует серийные номера как часть процесса сборки компаний. У меня есть понимание текущего процесса и рабочего процесса из-за изучения существующей системы. У меня также есть список новых требований и способы их изменения.
Я чувствую, что готов начать писать программу, и я решил заставить себя, наконец, сделать TDD от начала до конца.
Но теперь я понятия не имею, с чего начать. (Я также задаюсь вопросом, не обманываю ли я процесс TDD, уже имею представление о потоке программы для пользователя.)
Пользовательский поток действительно серийный и представляет собой всего лишь несколько шагов. В качестве примера первым шагом будет:
- пользователь отправляет номер производственного заказа и получает список сериализуемых номеров деталей этого заказаного материала.
Следующий шаг запускается, когда пользователь выбирает один из номеров деталей.
Поэтому я думал, что могу использовать этот первый шаг в качестве отправной точки. Я знаю, что мне нужен фрагмент кода, который принимает номер производственного заказа и возвращает список номеров деталей.
// This isn't what I'd want my code to end up looking like
// but it is the simplest statement of what I want
IList<string> partNumbers = GetPartNumbersForMfgOrder(string mfgOrder);
Прочитав примерную книгу Кента Беккса, он рассказывает о выборе небольших тестов. Это похоже на довольно большой черный ящик. Это потребует репозитория mfg order, и я должен сканировать дерево структуры продукта, чтобы найти все применимые номера деталей для этого заказа mfg, и я даже не определил свою модель домена в коде вообще.
Итак, с одной стороны, это похоже на дрянное начало - очень общую функцию высокого уровня. С другой стороны, мне кажется, что если я начну на более низком уровне, я действительно угадываю, что мне может понадобиться, и это кажется анти-TDD.
В качестве побочного примечания... это как использовать истории?
Как ассемблер Я хочу получить список номеров деталей по заказу mfg Чтобы я мог выбрать, какой из них будет сериализован
Чтобы быть правдивым, ассемблер никогда не говорил об этом. Все, что хочет ассемблер, это завершить операцию по порядку mfg:
Как ассемблер Я хочу отметить детали серийным номером Чтобы закончить операцию по порядку mfg