Ich möchte mit Objekten in meinen Unit-Tests beginnen. Es scheint Unmengen guter Spott-Frameworks zu geben.
- Haben die verschiedenen Frameworks unterschiedliche Zielgruppen?
- Welche Faktoren sollten bei der Auswahl des für meine Situation geeigneten Rahmens berücksichtigt werden?
Antworten:
Haben die verschiedenen Frameworks unterschiedliche Zielgruppen?
Ja. Mit einigen Frameworks wie Microsoft Moles , TypeMock Isolator und JustMock können Sie so gut wie alles verspotten. Diese Spott-Tools sind im Allgemeinen besser für Entwickler, die sie in vorhandenem Legacy-Code verwenden möchten, da es möglicherweise nicht möglich ist, ein solches Design in ein prüfbareres umzuwandeln. *
Traditionell bedeutet testbares Design, dass die Codebasis Schnittstellen, abstrakte Klassen, virtuelle Methoden, nicht versiegelte Klassen usw. großzügig nutzen muss. Daher funktionieren traditionelle Mocking-Frameworks wie Moq und RhinoMocks gut mit Code, der mit Test Driven Development, Dependency Injection und entwickelt wurde andere solche Konzepte. Übrigens würde ich die Verwendung von Dependency Injection sehr empfehlen, da Sie viel mehr als nur testbaren Code, sondern auch mehr wartbaren Code erhalten.
Welche Faktoren sollten bei der Auswahl des für meine Situation geeigneten Rahmens berücksichtigt werden?
* Unter Effektiv mit Legacy-Code arbeiten erfahren Sie , wie Sie Code ohne Tests langsam in Code umwandeln, der mit herkömmlichen Test- (und Spott-) Tools verwendet werden kann.
quelle
Das Moq-Tutorial enthält gleich zu Beginn einen Abschnitt zu Hintergrund, Philosophie und Kontroversen, in dem dies anhand einiger spezifischer Tools erläutert wird: TypeMock Isolator, RhinoMocks und Moq. Es wurde geschrieben, um Moq zu erklären, ist also natürlich etwas verzerrt, aber ich fand es ziemlich hilfreich für mich, wenn ich versuchte, einige der Unterschiede in den Spott-Frameworks zu verstehen.
Ich fand die Antworten auf diesen SO-Thread in C # Mocking Frameworks auch nützlich. Die meisten beziehen sich nur auf ein Mocking Framework, das der Benutzer wirklich nützlich findet, aber es gibt eine Antwort von HaraldV , in der Proxy-basierte Mocks und Profiler-basierte Mocks erörtert werden.
Ich konnte auch online eine Vergleichstabelle finden. Beachten Sie, dass es aus dem Jahr 2009 stammt, daher bin ich mir nicht sicher, ob es auf dem neuesten Stand ist. Es gibt mindestens einen Kommentar, der besagt, dass die Informationen zu TypeMock und Rückrufen veraltet sind. Das Diagramm kann jedoch hilfreich sein, um Probleme zu berücksichtigen, auch wenn Sie noch einige Vorbereitungen treffen müssen, um den aktuellen Status zu ermitteln: RhinoMocks, Moq, NMock, und TypeMock Vergleichstabelle
Auf Google Code gibt es ein Projekt mit Testfällen in mehreren Verspottungsframeworks zum einfachen Codevergleich: Verspottungsframeworks vergleichen
quelle
In meinem Team haben wir uns für Microsoft Moles entschieden . Es gewinnt signifikant auf # 2, # 3 und # 4, obwohl es weniger idiomatisch als die meisten Alternativen ist und auf # 1 am unteren Ende liegt.
quelle