2015-01-19 8 views
6

Teilen der Instanz Fixture über mehrere Testmethoden eine gute Praxis?Freigabe von AutoFixture über Tests hinweg

Oder ist es besser, eine neue Instanz von Fixture für jede Testmethode zu erstellen?

Was ist die beste Vorgehensweise? Es wird gut sein, wenn du mir eine Quelle liefern kannst, auf der man Anti-Pattern ist.

Antwort

7

AutoFixture hat seinen Namen von dem Fixture Muster:.

„eine Testvorrichtung ist alles das, was wir an Ort und Stelle haben, um benötigen einen Test und erwarten, dass ein bestimmtes Ergebnis zu laufen [...] Das Einrichten der Testvorrichtung ist die erste Phase der Four-Phase Test. "

Während ein Shared Fixture eine konzeptionelle Möglichkeit ist, kommt es mit vielen Nachteile, weil sie es schwieriger macht voneinander zu machen Tests unabhängig.

AutoFixture wurde explizit entworfen, um eine wiederverwendbare Bibliothek zum Erstellen von Fixtures bereitzustellen, anstatt Fixture Objects für jede neue Art von Testkontext, den Sie erstellen müssen, manuell zu codieren.

Es gibt Leute, die ein einzelnes (AutoFixture) Fixture Objekt erstellen und es über mehrere Testmethoden teilen, aber ich habe nie verstanden, warum sie das tun; es widerspricht fast dem Zweck von AutoFixture.

Dennoch, wenn Sie eine solche Einrichtung nützlich finden, wer bin ich, Ihnen zu sagen, damit aufzuhören? Was auch immer Ihr Boot schwimmt ... AutoFixture wurde jedoch mit dem expliziten Anwendungsfall einer Instanz pro Testmethode entworfen, und ich habe keine Vorteile gesehen, dies anders zu machen.

6

Die beste Praxis ist von Vorteil AutoFixture.Xunit oder AutoFixture.NUnit2 zu nehmen und vermeiden eine Fixture Instanz erstellen, innerhalb oder außerhalb der Prüfverfahren oder Funktionen.

Wenn Sie eine der oben genannten Kleber Bibliotheken nicht verwenden können, ist es eine gute Praxis angesehen, wenn eine neue Instanz der Fixture Klasse in jedem Test.

Mithilfe einer neuen Instanz der Fixture-Klasse können Sie steuern, wie sich AutoFixture bei jedem einzelnen Test verhält, da Sie Anpassungen darauf anwenden können und sich nicht auf alle anderen Tests auswirken.

Verwandte Themen