2009-03-27 3 views
43

Ich kann keinen spezifischen feature-by-feature Vergleich von Moq und Rhino finden. Alle Fragen lauten: "Was gefällt dir besser und warum?" Oder "Hier geht es darum, wie man einen einfachen Spott im Nashorn macht und wie es in moq gemacht wird".Was sind die Fähigkeiten von Moq und Rhino.mocks?

Ich kann nirgendwo einen tiefen Vergleich finden. Ich kenne die Syntaxunterschiede, ich suche keine Antworten dazu. Ich bin auf der Suche nach einem Funktionsvergleich. Zum Beispiel:

  • Rhino hat Expect.On() für Gewinde spöttischen. Kann Moq das machen?

  • Was ist mit Multi-Mocking (Implementierung mehrerer Schnittstellen mit einem Schein). Kann Moq das machen?

  • Ich glaube, Moq kann jetzt Protected Mitglieder mockten. Kann Rhino das machen?

bearbeiten: Ich landete auch auf einige der anderen .Net-Frameworks suchen.

+0

siehe auch http://stackoverflow.com/questions/642620/what-should-i-consider-when-choosing-a-mocking-framework-for-net –

+0

- Überprüfen Sie [hier] (http: // code .google.com/p/moq/wiki/QuickStart) für die moq-Funktionen - Überprüfen Sie [hier] (http://ayende.com/projects/rhino-mocks.aspx) für die Rhino Mocks-Funktionen – rguerreiro

Antwort

88

Dank denen, die in den letzten Wochen geantwortet haben. Am Ende schrieb ich einen Blog-Post über meine Erkenntnisse, da ich so viel zu graben hatte, dass es so aussah, als könnte ich sie in der Hoffnung zusammenfassen, anderen zu helfen. Die Tabelle I posted organisiert meine Erkenntnisse:

alt text

Eine Einschränkung, die ich auf der Blog-Post berührt, ist, dass das Diagramm zur Überprüfung der Fähigkeiten nützlich, aber die wirklichen Vorteile für die meisten Frameworks sind ihre einzigartigen Eigenschaften. Ich wählte Moq am Ende wegen der einfach zu bedienenden API. Außerdem unterliegen alle Informationen Fehlern und Änderungen - wenn Sie mit etwas auf dem Diagramm nicht einverstanden sind, schreiben Sie bitte einen Kommentar.

+0

Ich aktualisierte das Diagramm leicht. Es kann einige Überarbeitungen in der nächsten Zeit geben, ich habe noch einige zusätzliche Werbebuchungen, die hinzugefügt werden können. – womp

+3

+1 schönes Diagramm, macht eine gute Zusammenfassung – zombat

+0

Hey @womp, können Sie bitte das Diagramm neu laden? Der Link verweist auf ein japanisches Zeichen ;-) –

2

Ich bin kein Experte, aber ich glaube, dass das Rhino einige der Moq-Syntax hinzugefügt hat, so dass die Lernkurve auf das reduziert wurde, was Sie mit MoQ erwarten würden. Ich arbeitete mit beiden Tests und einige der Syntax war fast identisch. Ich ging anfangs mit MoQ, da es einfacher war, aber dann zeigte mir meine Knospe die neuesten Updates und wie ähnlich sie waren. Lass es dich wissen.

+0

Ich finde das tatsächlich ist eines der Dinge, die Rhino härter machen. Fast die gesamte Dokumentation ist für die älteren Syntaxen gedacht, so dass man sie am Ende verwischt, wenn man sich die Beispiele ansieht, was zu allerlei seltsamen Fehlern führt:/ – womp

+2

Einverstanden.Es scheint, als ob sie versucht haben, bestimmte Dinge auf mehrere Arten zu tun, ohne die "alte" Art und Weise zu entfernen. Ich denke, es ist für die Kompatibilität. Ich habe ehrlich gesagt ein viel besseres Verständnis von MoQ, nur weil es nicht versucht, einen Mock oder einen Fake und keine funky Syntax zu unterscheiden. MoQ ist ziemlich nett mit diesem – rball

1

Rhino hat GetArgumentsForCallsMadeOn(), was IMO erleichtert, Argumente in einigen Fällen zu überprüfen.

-1

Ich könnte "Behavior Verification" in diese hinzufügen. Das scheint die größte Einschränkung von Moq zu sein, die Rhino (nicht sicher über andere) kein Problem hat.

+2

Was ist beschränkt auf Verhaltensüberprüfung in Moq? Ich bin noch nicht auf irgendwelche Einschränkungen gestoßen. Es verfügt über Verify() und VerifyAll(), und Sie können jeden Aufruf von Setup() unabhängig vom Rückgabewert als verifizierbar festlegen. – womp

0

Nur der Vollständigkeit halber werde ich feststellen, dass es jetzt NMock3 unter CodePlex gibt. Es hat eine einfache Migration von NMock2, ersetzen Sie einfach den Verweis auf NMock2.dll mit einem Verweis auf NMock3.dll. Es fügt Typsicherheit und Unterstützung für Refactoring hinzu.

Verwandte Themen