В настоящее время я изучаю TDD и пытаюсь применить его на практике в своих личных проектах. Я также широко использовал контроль версий во многих из этих проектов. Я заинтересован во взаимодействии этих двух инструментов в типичном рабочем процессе, особенно когда дело доходит до максимума, чтобы коммиты оставались небольшими. Вот несколько примеров, которые приходят на ум:
Я начинаю новый проект и пишу простой тест для создания еще не существующего класса. Должен ли я выполнить тест перед написанием класса, даже если тест даже не компилируется? Или я должен заглушить минимальный объем кода, необходимый для компиляции теста перед его фиксацией?
Я нахожу ошибку и пишу тест, чтобы воссоздать ее. Должен ли я выполнить неудачный тест или реализовать исправление ошибки, а затем зафиксировать?
Это два примера, которые сразу приходят на ум. Не стесняйтесь приводить дополнительные примеры в своем ответе.
Редактировать:
В обоих примерах я сделал предположение, что сразу после написания теста я напишу код для прохождения теста. Может также возникнуть другая ситуация: я работаю над проектом с использованием TDD в течение нескольких часов без коммитов. Когда я наконец делаю коммиты, я хочу разбить свою работу на маленькие кусочки. (Git делает это относительно легко, даже если вы хотите зафиксировать только некоторые изменения в одном файле.)
Это означает, что мой вопрос касается как того, что совершать, так и вопроса о том, когда совершать.