Erstens zwingt TDD Sie nicht strikt zum Schreiben von SOLID-Code. Sie könnten TDD machen und ein großes Durcheinander schaffen, wenn Sie wollten.
Natürlich hilft es, die SOLID-Prinzipien zu kennen, da Sie andernfalls möglicherweise keine gute Antwort auf viele Ihrer Probleme haben und daher schlechten Code mit schlechten Tests schreiben.
Wenn Sie bereits mit SOLID-Grundsätzen vertraut sind, empfiehlt TDD Ihnen, darüber nachzudenken und diese aktiv zu nutzen.
Das heißt, es werden nicht unbedingt alle Buchstaben in SOLID abgedeckt , aber es fordert Sie nachdrücklich dazu auf und fordert Sie dazu auf, zumindest teilweise SOLID-Code zu schreiben, da dies die Konsequenzen hat, wenn dies nicht sofort sichtbar und ärgerlich ist.
Beispielsweise:
- Sie müssen entkoppelten Code schreiben, damit Sie sich über das lustig machen können, was Sie brauchen. Dies unterstützt das Abhängigkeitsinversionsprinzip .
- Sie müssen Tests schreiben, die klar und kurz sind, damit Sie nicht zu viel an den Tests ändern müssen (was zu einer großen Quelle von Code-Rauschen führen kann, wenn dies anders erfolgt). Dies unterstützt das Prinzip der einheitlichen Verantwortung .
- Dies mag umstritten sein, aber das Prinzip der Schnittstellentrennung ermöglicht es Klassen, sich auf leichtere Schnittstellen zu verlassen, die das Verfolgen und Verstehen von Verspottungen erleichtern, da Sie nicht fragen müssen, warum diese 5 Methoden nicht auch verspottet wurden Noch wichtiger ist, dass Sie keine große Auswahl haben, wenn Sie sich für eine Methode zum Verspotten entscheiden. Dies ist gut, wenn Sie nicht wirklich den gesamten Code der Klasse durchgehen möchten, bevor Sie sie testen. Verwenden Sie einfach Versuch und Irrtum, um ein grundlegendes Verständnis der Funktionsweise zu erlangen.
Das Einhalten des Open / Closed-Prinzips kann bei Tests hilfreich sein, die nach dem Code geschrieben wurden, da Sie normalerweise externe Dienstaufrufe in Testklassen überschreiben können, die von den getesteten Klassen abgeleitet sind. Bei TDD glaube ich, dass dies nicht so erforderlich ist wie bei anderen Grundsätzen, aber ich kann mich irren.
Das Einhalten der Liskov-Substitutionsregel ist ideal, wenn Sie die Änderungen für Ihre Klasse minimieren möchten, um eine nicht unterstützte Instanz zu erhalten, die zufällig dieselbe statisch typisierte Schnittstelle implementiert, dies jedoch in geeigneten Testfällen wahrscheinlich nicht der Fall ist Im Allgemeinen werden die Real-World-Implementierungen der Abhängigkeiten von Class-Under-Test nicht bestanden.
Am wichtigsten ist, dass SOLID-Prinzipien erstellt wurden, um Sie zu ermutigen, saubereren, verständlicheren und wartbareren Code zu schreiben, und TDD auch. Wenn Sie also TDD richtig ausführen und darauf achten, wie Ihr Code und Ihre Tests aussehen (und es ist nicht so schwierig, weil Sie sofort Feedback, API und Korrektheit erhalten), können Sie sich im Allgemeinen weniger Gedanken über SOLID-Prinzipien machen.