eBizTalk - Berichten, Unterhalten, Weiterbilden
Ob Branchendiskurs, Fachartikel oder ein Blick hinter die Unternehmenskulissen: eBizTalk ist die Plattform, die uns auffordert, unsere Leser über Events und Projekte auf dem Laufenden zu halten. Und uns gegenseitig natürlich auch.

.NET Mocking Frameworks im Vergleich

Veröffentlicht am 31.08.2015 von Kevin Setiono , Custom Development

Mocking Frameworks gibt es reichlich, und aus der großen Auswahl das Richtige zu wählen, fällt nicht immer leicht. Auch im .NET Umfeld gibt es einige Vertreter mit unterschiedlichen Stärken und Schwächen. Je nach Anforderungsprofil findet damit jeder den passenden Helfer.

Im letzten Artikel dieser Serie “Einführung in Mocking Framework” haben wir vorgestellt, was Mocking Frameworks grundsätzlich sind, und gezeigt, unter welchen Aspekten diese Frameworks sich vergleichen lassen. Im Folgenden knüpfen wir daran an und stellen verschiedene Mocking Frameworks aus dem .NET Umfeld vor und vergleiche diese.

Welche Mocking Frameworks gibt es für .NET?

Es gibt viele Mocking Frameworks, und während Sie diesen Blogartikel lesen, werden wahrscheinlich gerade neue entwickelt. Um eine verwertbare Analyse zu erstellen, müssen wir Abgrenzungen schaffen. Unsere erste Abgrenzung ist: Wir wollen ein quelloffenes Framework und das kostenfrei bzw. ein Open Source Framework. Die Liste der Frameworks war auch nach diesem Kriterium sehr groß, weswegen wir entschieden haben: Wir folgend dem Trend!

Die Trend-Liste besteht nach unseren Recherchen aus folgenden Mocking Frameworks im .NET Bereich:

  • NSubstitute
  • FakeItEasy
  • Moq
  • Rhino Mocks

Aktivität

Werden die Open Source Projekte gewartet, bzw. beteiligt sich die Community noch an dem Projekt? Ansonsten müssen interne Entwickler Fehler im Framework beheben. Das erzeugt Kosten und verlangsamt die Lernkurve.

Release Cycle

In Open Source Projekten gibt es Stable Releases. In großen Softwareprojekten wollen wir uns ungern auf Software verlassen, die keine Qualitätssicherung durchlaufen hat.

Anwendbarkeit

Sie betrifft die Syntax, die Lernkurve und die Dokumentation. Die Dokumentation in Open Source Projekten kommt leider oft zu kurz. Das Problem an fehlender Dokumentation ist, dass in den Quellcode geschaut werden muss. Die Lernkurve steigt – und mit ihr auch die Kosten. Der Elan, mit dem die Entwickler mit dem Framework arbeiten, sinkt dadurch vermutlich auch. Das ist aus meiner Sicht ein nicht unerheblicher Punkt, denn glückliche Mitarrbeiter arbeiten lieber und besser.

Google Trend

Google Trend ist eine Analyse von Google, die die Suchfrequenz von Begriffen über die Zeit verfolgt. Wir analysieren mit Google Trend die Marktverbreitung bzw. wie oft Entwickler nach dem jeweiligen Mocking Framework bei Google eingeben.

Moq

Moq wird stetig weiterentwickelt. Die letzte Änderung am Quellcode ist aktuell ungefähr einen Monat her. Der Release Cycle von Moq ist nicht ganz so erfreulich, das letzte Release kam 2013 heraus. Die Dokumentation ist nicht ausführlich, sozusagen minimal. Es lassen sich aber im Internet viele Beispiele finden, weil Moq einen großen Bekanntheitsgrad hat und sich intuitiv anwenden lässt. Moq liegt – obwohl es eines der ältesten .NET Mocking Frameworks ist – im Trend, was sich mit Google Trends nachweisen lässt. Die Google Trends Kurve steigt stetig.

Rhino Mocks

Rhino Mocks wurde seit 2010 nicht mehr weiterentwickelt, somit ist auch der Release Cycle nicht relevant. Rhino Mocks ist leider, wie die Entwicklung vermuten lässt, veraltet und der Google Trend geht stark zurück. Sehr positiv fällt bei Rhino Mocks dennoch die Dokumentation aus, die ausführlich und einfach verständlich ist. Mock Beispiele sind dennoch sehr häufig im Internet zu finden, was auf das Alter zurückzuführen ist.

NSubstitute

Die Community und der Release Cycle sind auf Zack. Es werden im Jahr mehrere Releases erzeugt. Der Trend von NSubstitute geht nach oben. Es ist anzunehmen, dass NSubstitute eine ernstzunehmende Konkurrenz für Moq ist. Die Dokumentation ist ausführlich und leicht verständlich. Die Syntax ist “state of the art”, es ist eine Fluent API.

FakeItEasy

Wie bei NSubstitute ist der Release Cycle und die Community aktiv. Es werden ebenfalls mehrere Releases im Jahr erzeugt. Der Trend von FakeItEasy ist seit circa einem Jahr konstant hoch, somit ist auch FakeItEasy eine ernstzunehmende Konkurrenz für Moq und NSubstitute. Auch hier gilt: Die Syntax ist “state of the art”, es ist eine Fluent API.

Ein kurzer Direktvergleich von FakeItEasy, NSubstitute und Moq

Alle drei Mocking Frameworks unterstützen Fluent API. Fluent APIs sind “state of the art”, da die Syntax einfacher lesbar ist. Die Frameworks sind aufgrund der gleichen API Syntax und Technologiebasis ähnlich. NSubstitute verwendet keine Lambda Ausdrücke, die anderen beiden dagegen schon.

Die unterstützten Features der einzelnen Mocking Frameworks unterscheiden sich nur in kleinen Details, die meines Erachtens für eine erste Auswahl nicht relevant sind. Sollte das Team mit einen der Mocking Frameworks Erfahrungen haben, ist dies entscheiender als die Feature-Unterschiede.

Im nächsten Artikel werden wir ein ausgewähltes Mocking Framework detaillierter betrachten. Welches Mocking Framework es wird, wollen wir noch nicht verraten …

google_about_ebiz fb_about_ebiztwitter_about_ebizxing_about_ebiz
ebiz_consulting_expertise