Was sollte ich beachten bei der Auswahl ein mocking-framework für .Net
Es gibt viele von mocking-frameworks gibt .Net. Es gibt keinen klaren Sieger, verdrängt die anderen in jeder Hinsicht. Die führenden mocking frameworks haben auch viele verschiedene Stile der Nutzung.
Die Zeit es braucht, zu lernen, alle die mocking frameworks gut genug, um zu entscheiden, welche zu verwenden, unangemessen ist. Ich glaube nicht, dass wir noch eine Stufe erreicht, dass wir darüber sprechen können die besten mocking framework. Also, welche Fragen sollte ich Fragen, sowohl über das Projekt und über mich, zu helfen, zu entscheiden, auf die besten mocking framework zu verwenden, in einem bestimmten Fall?
Sinnvoll wäre es auch zu wissen, warum Sie sich für das mocking framework, das Sie gerade verwenden, und wenn Sie sind immer noch glücklich mit dieser Wahl.
Ist es eine nützliche Vokabeln zu verwenden, die beim Vergleich der Stile von mocking frameworks?
(Hinweis: begrenzt habe ich diese Frage an .Net so wie in Java nicht haben, die Attribute oder lambda-Ausdrucks, so hoffe ich, dass die mocking-frameworks kann für Sie besser sein .Net, Java)
Zusammenfassung bisher:
- Wenn Sie brauchen, um mock-statische Methode, oder
keine virtuellen Methoden, dann die nur
sinnvolle option ist TypeMock, aber es ist nicht frei und nicht fahren, Sie auf ein gutes design. - Rhino Mocks ist eine sehr gute option, wenn Sie
tun, TDD, .e.g die Objekte, die Sie
möchten mock interfaces implementieren. Derzeit scheint es der "Marktführer" - Moq (Einführung) sollte berücksichtigt werden, wenn Sie
mit .NET 3.5 Moq kann zu gewinnen Rhino Mocks für neue Projekte
Was habe ich verpasst, aus dieser Zusammenfassung?
Was also treibt die Wahl zwischen Rhino Mocks und Moq, wenn Sie verwenden .NET 3.5?
siehe auch:
- Was C# mocking framework zu verwenden?
- Was sind die Fähigkeiten von Moq und Rhino.mocks?
- Was sind die realen vor-und Nachteile jeder der großen mocking frameworks?
"Was sollte ich beachten bei der Auswahl eines dependency-injection-framework für .NET?" kann auch von Interesse sein, bittet er die "andere Seite" der Frage.
- Jemand versucht JustMock telerik.com/products/mocking.aspx von telerik?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Also, welche Fragen sollte ich Fragen zu dem Projekt und mir selbst zu helfen, entscheiden über die beste mocking framework zu verwenden, in einem bestimmten Fall?
Fragen, die Sie stellen sollten über das Projekt: das Projekt wurde entwickelt mit der SOLID-Prinzipien, oder nicht? Ist das ein Projekt, das die lose Kopplung und hohe Kohäsion? Haben gute OO-Prinzipien verwendet worden, in das Projekt zu erstellen? Ist ein Dependency-Injection-container verwendet? Hat das system codiert wurde, in einem Design by Contract Methode (unter Verwendung der Schnittstellen gründlich)?
Wenn Sie alle Fragen mit ja beantworten, dann nutzen Sie ein mocking-framework wie RhinoMocks, das ist das, was einige nennen würde eine "rechthaberisch" Rahmen. RhinoMocks, und einigen anderen mocking-frameworks, haben sehr starke Meinungen darüber, wie ein system gestaltet sein sollte, um für Objekte zu spotten. Ein framework wie RhinoMocks erwartet, dass Ihr Projekt konzipiert werden, in einer bestimmten Weise. Spott ist sicherlich viel einfacher, mit RhinoMocks, wenn Sie gebaut haben, Ihren code der richtige Weg (nicht versiegelte Klassen, keine Statik, die starke Nutzung von Schnittstellen, virtuelle Klassen, Methoden, etc.)
Wenn Sie keine Antwort auf diese Fragen, oder wenn Sie arbeiten auf einem legacy-system mit einer Menge von stark gekoppelten Klassen, dann ist Ihre einzige Wahl sein wird, TypeMock, die mock-einfach über alles.
Es wäre auch nützlich zu wissen, warum Sie wählen das mocking framework, das Sie gerade verwenden, und wenn Sie sind immer noch glücklich, dass Sie wählen.
Wählte ich RhinoMocks, weil zu der Zeit (3 Jahre her) es war eindeutig das reifste von mocking-Frameworks mit den meisten features. Ich war schon mit ihm, denn es hat sich in den Weg, dass macht mein Leben viel einfacher (das Aufkommen der AutoMocking container einen riesigen Schritt in Richtung Effizienz).
Was ich mag über RhinoMocks, andere als die feature-set und Benutzerfreundlichkeit, ist, dass es führt mich hin zu einem besseren design in meinem code. Ich bin kein perfekter Programmierer, und ich bin gehen, um Fehler im design. Aber tools wie RhinoMocks und NHibernate helfen, mich zu einem besseren design, weil wenn ich machen Fehler und erstellen ein schlechtes design, diese Werkzeuge schmerzhaft, mit zu arbeiten. NHibernate, zum Beispiel, ist schmerzhaft, mit zu arbeiten, wenn Sie einen schlechten Datenbank-design. RhinoMocks ist sehr schmerzhaft, mit zu arbeiten, wenn Sie eine schlechte Klasse design, nicht mit Schnittstellen, nicht mit IoC... etc.
Ich mag RhinoMocks, weil es letztlich hilft mir ein besserer Entwickler, und das nicht nur, weil ich Teste meinen code, aber da bin ich der Gestaltung meiner code - gestalten Sie es in einer besseren Art und Weise.
Ich lieber Moq für .NET 3.5 Projekte. Es ist einfach zu bedienen und, in meiner Erfahrung, es hilft, produzieren saubere und klare unit-tests.
Es gibt keinen technischen Grund, warum Sie nicht verwenden können, mehr als ein mocking-framework, auf das gleiche Projekt. Sicher, es ist schön zu standardisieren, aber einige tests können eignen sich besser, um einige frameworks.
Disclaimer – ich arbeite für Typemock
Ich bin nicht einverstanden mit "Typemock nicht fahren Sie zu einem guten design". Es ist Sie, der Entwickler, der fährt ein gutes oder schlechtes design, nicht das Werkzeug, das Sie verwenden. Holen Sie sich das tool bekommt den job zu erledigen, und machen Sie produktiver arbeiten können, aber die Verantwortung für gutes design, ist Ihre eigene. Wenn Sie denken, dass die Verpackung alle Arten von Abstraktionen, die in Ihrem code, nur für die Prüfung, gehen für Sie, aber Sie kann nicht kommen mit einem "guten" design. Es könnte komplexer sein, als der Entwurf, den Sie jetzt haben.
Was sollte ich beachten bei der Auswahl ein mocking-framework für .Net
Ein weiterer Aspekt, neben der Gestaltung des code-Basis, die Sie testen, ist, wie lesbar die tests sind bei der Verwendung von mocks.
In dieser Hinsicht bin ich putting in einer Abstimmung für NSubstitute - eines der neueren mocking-frameworks eine sehr expressive API (keine lambdas) und vergleichbare Funktionen mit Moq und Rhino Mocks. Es hat kürzlich die version 1.0 erreicht.
Einen Syntax-Beispiel (aus der NSubstitute homepage):
Einen detaillierten Vergleich der Lesbarkeit von tests mit RhinoMocks, Moq und NSubstitute gegeben ist hier.
stubs sieht interessant aus und ich denke, das Schiff mit .NET V4. Ich weiß nicht, Hexe, die Ausgabe von developer studio werden Sie brauchen, um es zu benutzen. Derzeit Sie können download es aus den obigen link.
(Ich habe dies geschrieben, als answser rathern dann indem es um die Frage, wie ich noch nie verwendet, Ersticht und nur ein paar Minuten Zeit, es zu betrachten)
RhinoMock ist so ziemlich das state-of-the-art-mocking framework für .NET. Kann nicht schief gehen mit es. Ich denke, man kann seinem "Stil" als ein "Jack of all trades", wenn Sie so wollen.
Aus Ihrer Website:
Was bedeutet Rhino Mocks bieten?
Ich würde empfehlen, FakeItEasy. Es ist ein wirklich beschreibend mocking framework, das es erlaubt, sehr einfach zu Lesen und lustig von Schnittstellen. Es hat eine aktive open source community und funktioniert sehr gut.
Benutze ich Telerik JustMock, es ist sehr Professionell und einfach mock-framework mit einem guten Beleg.