Wenn Sie keinen Code schreiben, ohne ihn zu testen, fallen immer die Kosten für das Testen an.
Der Unterschied zwischen Unit-Tests und Nicht-Unit-Tests ist der Unterschied zwischen den Kosten für das Schreiben und Ausführen des Tests und den Kosten für das manuelle Testen.
Wenn die Kosten für das Schreiben eines Komponententests 2 Minuten betragen und die Kosten für das Ausführen des Komponententests praktisch 0 betragen, die Kosten für das manuelle Testen des Codes jedoch 1 Minute betragen, können Sie den Break Even erzielen, wenn Sie den Test zweimal ausgeführt haben.
Viele Jahre lang hatte ich das Missverständnis, dass ich nicht genug Zeit hatte, Komponententests für meinen Code zu schreiben. Wenn ich Tests schrieb, waren sie aufgebläht, schwere Dinge, die mich nur ermutigten zu glauben, dass ich Komponententests nur schreiben sollte, wenn ich wusste, dass sie gebraucht wurden.
Vor kurzem wurde ich ermutigt, Test Driven Development zu verwenden, und ich fand es eine vollständige Offenbarung. Ich bin jetzt fest davon überzeugt, dass ich nicht die Zeit habe, Unit-Tests nicht zu schreiben .
Wenn Sie mit Blick auf das Testen entwickeln, erhalten Sie meiner Erfahrung nach sauberere Schnittstellen, fokussiertere Klassen und Module und im Allgemeinen mehr SOLIDEN , testbaren Code.
Jedes Mal, wenn ich mit Legacy-Code arbeite, für den es keine Komponententests gibt, und ich etwas manuell testen muss, denke ich, dass dies viel schneller gehen würde, wenn für diesen Code bereits Komponententests vorhanden wären. Jedes Mal, wenn ich versuchen muss, dem Code mit hoher Kopplung Unit-Test-Funktionen hinzuzufügen, denke ich, dass dies so viel einfacher wäre, wenn er entkoppelt geschrieben worden wäre.
TL; DR- Version:
Schreiben Sie einen Test, wenn die Kosten für das Schreiben des Tests und die Kosten für das Ausführen des Tests so oft wie nötig geringer sind als die Kosten für das manuelle Testen so oft wie nötig.
Denken Sie jedoch daran, dass bei Verwendung von TDD die Kosten für das Schreiben von Tests wahrscheinlich sinken, je besser Sie darin sind. Wenn der Code nicht absolut trivial ist, werden Sie Ihre Tests wahrscheinlich häufiger ausführen als erwartet.