Obecnie uczę się o TDD i staram się wprowadzić go w życie w moich osobistych projektach. Użyłem również kontroli wersji w wielu projektach. Interesuje mnie współdziałanie tych dwóch narzędzi w typowym przepływie pracy, szczególnie jeśli chodzi o maksymę, aby utrzymywać małe zobowiązania. Oto kilka przykładów, które przychodzą na myśl:
Zaczynam nowy projekt i piszę prosty test, aby stworzyć klasę, która jeszcze nie istnieje. Czy powinienem wykonać test przed napisaniem klasy, nawet jeśli test się nawet nie skompiluje? A może powinienem usunąć minimalną ilość kodu potrzebną do skompilowania testu przed zatwierdzeniem?
Znajduję błąd i piszę test, aby go odtworzyć. Czy powinienem zatwierdzić test zakończony niepowodzeniem, czy wdrożyć poprawkę błędu, a następnie zatwierdzić?
Są to dwa przykłady, które przychodzą mi na myśl. Podaj dodatkowe przykłady w swojej odpowiedzi.
Edytować:
W obu przykładach założyłem, że zaraz po napisaniu testu napiszę kod, aby test przeszedł pomyślnie. Może się również pojawić inna sytuacja: pracuję nad projektem przy użyciu TDD przez kilka godzin bez zobowiązań. Kiedy w końcu podejmuję decyzje, chcę podzielić moją pracę na małe części. (Git sprawia, że jest to stosunkowo łatwe, nawet jeśli chcesz zatwierdzić tylko niektóre zmiany w jednym pliku).
Oznacza to, że moje pytanie dotyczy zarówno tego, co popełnić, jak i kiedy .