Ich teste eine Methode, die eine Sammlung von Datenobjekten erzeugen soll. Ich möchte überprüfen, ob die Eigenschaften der Objekte korrekt eingestellt sind. Einige der Eigenschaften werden auf dasselbe festgelegt. andere werden auf einen Wert gesetzt, der von ihrer Position in der Sammlung abhängt. Der natürliche Weg, dies zu tun, scheint eine Schleife zu sein. Roy Osherove rät jedoch nachdrücklich von der Verwendung von Logik in Komponententests ab ( Art of Unit Testing , 178). Er sagt:
Ein Test, der Logik enthält, testet normalerweise mehr als eine Sache gleichzeitig, was nicht empfohlen wird, da der Test weniger lesbar und anfälliger ist. Die Testlogik erhöht jedoch auch die Komplexität, die einen versteckten Fehler enthalten kann.
Tests sollten in der Regel eine Reihe von Methodenaufrufen ohne Kontrollflüsse (auch nicht)
try-catch
und mit Assert-Aufrufen sein.
An meinem Design kann ich jedoch nichts Falsches erkennen (wie sonst generieren Sie eine Liste von Datenobjekten, von deren Werten einige in der Reihenfolge abhängen, in der sie sich befinden? - Sie können sie nicht exakt separat generieren und testen). Gibt es etwas nicht testfreundliches an meinem Design? Oder widme ich mich zu sehr Osheroves Lehre? Oder gibt es eine geheime Unit-Test-Magie, die ich nicht kenne, um dieses Problem zu umgehen? (Ich schreibe in C # / VS2010 / NUnit, suche aber wenn möglich nach sprachunabhängigen Antworten.)
in
) erforderlich machen, wenn der Test "Frob wurde erfolgreich zu einer vorhandenen Sammlung hinzugefügt" lautet.
toString()
die Sammlung und vergleiche mit dem, was es sein sollte. Einfach und funktioniert.