Am einfachsten ist es, mit einer Klasse zu beginnen, die keine Abhängigkeiten hat, eine Klasse, die von anderen Klassen verwendet wird, aber keine andere Klasse verwendet. Dann sollte man sich einen Test vornehmen und sich fragen: "Wie kann ich wissen, ob diese Klasse (diese Methode) korrekt implementiert ist?".
Dann könnten Sie einen ersten Test schreiben, um Ihr Objekt abzufragen, wenn es nicht initialisiert ist, es könnte NULL zurückgeben, oder eine Ausnahme auslösen. Dann können Sie Ihr Objekt (vielleicht nur teilweise) initialisieren, und testen, ob es etwas Wertvolles zurückgibt. Dann können Sie einen Test mit einem anderen Initialisierungswert hinzufügen - dieser sollte sich genauso verhalten. Zu diesem Zeitpunkt teste ich normalerweise eine Fehlerbedingung - z. B. den Versuch, das Objekt mit einem ungültigen Wert zu initialisieren.
Wenn Sie mit der Methode fertig sind, wechseln Sie zu einer anderen Methode derselben Klasse, bis Sie mit der gesamten Klasse fertig sind.
Dann können Sie eine andere Klasse wählen - entweder eine andere unabhängige Klasse oder eine Klasse, die die erste Klasse, die Sie implementiert haben, verwendet.
Wenn Sie sich für eine Klasse entscheiden, die auf Ihrer ersten Klasse aufbaut, halte ich es für akzeptabel, dass Ihre Testumgebung - oder Ihre zweite Klasse - die erste Klasse instanziiert, da sie vollständig getestet wurde. Wenn ein Test der Klasse fehlschlägt, sollten Sie in der Lage sein, festzustellen, in welcher Klasse das Problem liegt.
Sollten Sie in der ersten Klasse ein Problem entdecken oder sich fragen, ob sie sich unter bestimmten Bedingungen korrekt verhält, dann schreiben Sie einen neuen Test.
Wenn Sie beim Klettern durch die Abhängigkeiten feststellen, dass die Tests, die Sie schreiben, sich über zu viele Klassen erstrecken, um als Unit-Tests zu gelten, können Sie ein Mock-Objekt verwenden, um eine Klasse vom Rest des Systems zu isolieren.
Wenn Sie bereits Ihren Entwurf haben - wie Sie in einem Kommentar in der Antwort von Jon LimJap angedeutet haben, dann tun Sie nicht reines TDD, da es bei TDD darum geht, Einheitstests zu verwenden, um Ihren Entwurf entstehen zu lassen.
Abgesehen davon erlauben nicht alle Geschäfte striktes TDD, und Sie haben ein Design zur Hand, also lassen Sie es uns verwenden und TDD machen - obwohl es besser wäre, Test-First-Programming zu sagen, aber das ist nicht der Punkt, denn so habe ich auch mit TDD angefangen.