Ich habe über den London-Stil gegen den Chicago-Stil (manchmal Detroit-Stil genannt) von Test Driven Development (TDD) gehört.
Workshop der Utah Extreme Programming Users Group:
TDD im Interaktionsstil wird nach dem Londoner Club Extreme Tuesday, in dem es populär wurde, auch Mockist-Style oder London-Style genannt . Es wird normalerweise mit Detroit-Art oder klassischem TDD kontrastiert, das staatsbasierter ist.
Der Workshop befasst sich sowohl mit der Chicagoer Schule für TDD (State-based Behaviour Testing and Triangulation) als auch mit der Londoner Schule , die sich mehr auf Interaktionstests, Spott und durchgängige TDD konzentriert, mit besonderem Schwerpunkt auf Responsibility-Driven Design und Erklären Sie, fragen Sie nicht Ansatz zu OO, der kürzlich von Steve Freemans und Nat Pryces ausgezeichnetem Buch " Wachsende objektorientierte Software unter Anleitung von Tests" wieder populär gemacht wurde .
Die Post Classic TDD oder "London School"? von Jason Gorman war hilfreich, aber seine Beispiele verwirrten mich, weil er bei beiden Ansätzen zwei verschiedene Beispiele anstelle eines Beispiels verwendet. Was sind die Unterschiede? Wann benutzt du jeden Stil?
Calculator
Regressionmultiply
zwei Tests fehlschlagen: der Hauptbuch-Test und der Taschenrechner-Test, aber nur ein Test schlägt fehl, wenn Sie den Taschenrechner verspotten. Dies könnte es einfacher machen, den Ursprung des Fehlers zu lokalisieren, insbesondere wenn das System komplex ist.Der Artikel Mocks Arn't Stubs von Martin Fowler ist eine gute Einführung in das Thema.
Abhängig von dem von Ihnen gewählten Entwurfsstil (und den Entwurfsprinzipien, auf denen Sie Ihre Programme aufbauen) gibt es mindestens zwei Möglichkeiten, ein Objekt zu sehen:
Im ersten Fall interessiert Sie, was bei der Verarbeitung herauskommt oder in welchem Zustand das Objekt nach der Verarbeitung übrig bleibt. Hier geben Methoden wie
assertEquals()
das Bild ein. In diesem Fall spielt es keine Rolle, welche anderen Objekte an der Verarbeitung beteiligt waren, welche Methoden aufgerufen wurden usw. Diese Art der Überprüfung wird als zustandsbasierte Überprüfung bezeichnet und ist der "klassische" Stil.Im zweiten Fall
void
interessiert es Sie mehr, wie die Objekte miteinander kommunizieren und ob sie unter den vom Test auferlegten Umständen die richtigen Nachrichten weitergeben , da die meisten Objekte nicht einmal ein Ergebnis zurückgeben (z. B. Methoden in Java). Diese Wechselwirkungen werden in der Regel mit Hilfe von Mock-Frameworks überprüft. Diese Art der Überprüfung wird als verhaltensbasierte oder interaktionsbasierte Überprüfung bezeichnet. Eine der Auswirkungen ist die Technik der verhaltensgesteuerten Entwicklung, mit der Sie eine Klasse entwickeln, die davon ausgeht, dass ihre Mitarbeiter bereits vorhanden sind (auch wenn sie möglicherweise noch nicht vorhanden sind), sodass Sie anhand ihrer Schnittstellen programmieren können.Beachten Sie, dass dies keine Wahlmöglichkeit ist. Sie können einen Designstil haben, der beide Ansätze kombiniert, um das Beste aus jedem herauszuholen.
quelle