Erst testen / dann testen:
Es sollte beachtet werden, dass "Test first" als Teil von TDD genauso viel (wenn nicht mehr) mit Design zu tun hat wie mit Unit-Tests. Es ist eine eigenständige Softwareentwicklungstechnik - das Schreiben der Tests führt zu einer ständigen Verfeinerung des Designs.
Auf einer separaten Anmerkung: Wenn es einen bedeutenden Vorteil zu TDD aus einer reinen Unit-Testing-Perspektive gibt, ist es, dass es viel schwieriger (wenn auch nicht unmöglich) ist, einen Test zu schreiben, der falsch ist, wenn man TDD macht. Wenn Sie den Test im Voraus schreiben, sollte er immer fehlschlagen, weil die zum Bestehen des Tests erforderliche Logik noch nicht existiert. Wenn Sie den Test nachträglich schreiben, wird die Logik sollte vorhanden sein, aber wenn der Test fehlerhaft ist oder das Falsche testet, kann er trotzdem bestehen.
Wenn Sie also vorher einen schlechten Test schreiben, kann es sein, dass Sie ein grünes Licht bekommen, obwohl Sie ein rotes erwarten (Sie wissen also, dass der Test schlecht ist). Wenn Sie danach einen schlechten Test schreiben, erhalten Sie ein grünes Licht, obwohl Sie ein grünes erwartet haben (ohne zu wissen, dass der Test schlecht ist).
Bücher
Das pragmatische Unit-Testing-Buch ist einen Blick wert, ebenso wie Roy Osheroves "The Art of Unit Testing". Das pragmatische Buch ist enger auf die verschiedenen Arten von Testeingaben fokussiert, die Sie versuchen können, um Fehler zu finden, wohingegen TAOUT ein breiteres Spektrum an Themen abdeckt, wie z.B. Testdopplungen, Strategien, Wartbarkeit usw. Beide Bücher sind gut; es kommt darauf an, was Sie von ihnen erwarten.
Außerdem ist hier ein Link zu einem Vortrag von Roy Osherove über Einheitstests . Es lohnt sich, den Film anzuschauen (ebenso wie einige der von ihm aufgezeichneten Testvideos, in denen er auf verschiedene Probleme und Do's/Don'ts sowie auf die Gründe dafür hinweist).
Wie man beginnt
Es gibt nichts Besseres als Code zu schreiben. Suchen Sie sich eine recht einfache Klasse, die auf nicht viel anderes verweist. Beginnen Sie dann, einige Tests zu schreiben.
Fragen Sie sich immer: "Was will ich mit diesem Test versuchen und beweisen?", bevor Sie ihn schreiben, und geben Sie ihm dann einen vernünftigen Namen (der in der Regel die aufgerufene Methode, das Szenario und das erwartete Ergebnis beinhaltet, z. B. auf einem Stapel: "Pop WhenStackIsEmpty ThrowsException").
Denken Sie an alle Eingaben, die Sie machen können, an verschiedene Kombinationen von Methoden, die interessante Ergebnisse liefern können, und so weiter.
2 Stimmen
Versuchen Sie, diesen Artikel zu lesen: blog.codeville.net/2009/08/24/
2 Stimmen
Wenn Sie in C# sind, dann geben Sie das Geld aus und holen Sie sich eine Kopie von Resharper. Es ändert die ganze Erfahrung.
0 Stimmen
@Kane Ich glaube, die URL ändert sich in blog.stevensanderson.com/2009/08/24/