Frage

Ich bin also einigermaßen neu in der Einheitstests und der Verspottung in C# und .NET. Ich benutze Xunit.net- bzw. Rhino Mocks. Ich bin ein Konvertit und konzentriere mich auf Schreibverhaltenspezifikationen, denke ich, anstatt rein tdd zu sein. Bah, Semantik; Ich möchte im Wesentlichen ein automatisiertes Sicherheitsnetz.

Ein Gedanke hat mich allerdings beeindruckt. Ich bekomme Programmierung gegen Schnittstellen, und die Vorteile, was die Abhängigkeit von Abhängigkeiten betrifft. Verkauft. In meiner Verhaltensüberprüfungssuite (auch bekannt als Tests ;-)), behaupte ich das Verhalten jeweils eine Schnittstelle. Wie in einer Implementierung einer Schnittstelle nach dem anderen, wobei alle ihre Abhängigkeiten verspottet und die Erwartungen eingerichtet wurden.

Der Ansatz scheint zu sein, dass, wenn wir überprüfen, ob sich eine Klasse so verhält, wie sie sich gegen ihre zusammenarbeitenden Abhängigkeiten tun sollte, und wiederum auf jede dieser zusammenarbeitenden Abhängigkeiten beruht, um denselben Qualitätsvertrag unterzeichnet zu haben, sind wir golden. Scheint vernünftig genug.

Zurück zum Gedanken. Gibt es einen Wert in Semi-Integrationstests, bei denen eine Testfixierung gegen eine Einheit von konkreten Implementierungen geltend gemacht wird, die miteinander verbunden sind, und wir testen ihr internes Verhalten gegen verspottete Abhängigkeiten? Ich habe das nur noch einmal gelesen und ich denke, ich hätte es wahrscheinlich besser forreden können. Offensichtlich wird es eine gewisse Menge an "Nun, wenn es einen Mehrwert für Sie erhöht, machen Sie es weiter", nehme ich an - aber hat jemand anderes darüber nachgedacht und davon profitiert, dass die Kosten davon überwiegt, um die Kosten zu überwiegen?

War es hilfreich?

Lösung

Ihre Frage wurde seit Jahren diskutiert und kann auch als "Was ist eine Einheit" umformuliert werden?

Es gibt kein Gesetz von Einheitenprüfung, das besagt, dass Sie jede Klasse isoliert testen müssen. Um aufrechterhalten zu werden, möchten Sie jedoch wirklich, dass Tests sich nur dann ändern müssen, wenn sich das von ihnen testende Verhalten ändert. Auf diese Weise ist es oft vernünftig, konkrete Versionen von engen Mitarbeitern und Fälschungen für weiter entfernte zu verwenden.

Der einzige Ort, an dem ich absolut Fälschungen der einen oder anderen Art benutze, besteht darin, Michael Feather zu folgen Regeln der Einheitenprüfung.

Andere Tipps

Ich sehe keinen Wert in Integrationstests, bei denen nur die prüfbaren internen Klassen mit vollständig einheitlichem miteinander verbunden sind.

Es scheint mir, dass der Wert in Integrationstests darin besteht, dass er die Plattform oder die externen Schnittstellen berührt, dh Verträge, die Sie nicht in Einheitstests können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top