NMock vs. NMock 2 vs. NMock 2.0 vs. NMock 3

Open Source ohne Internet ist nicht vorstellbar. Wie sollten sich sonst die Leute finden die die Software entwickeln und verwenden wollen? Leider stellt gerade das Netz den Menschen gelegentlich auch ein Bein. Denn letztendlich fördert es die Anonymität und die Verteilung von Ressourcen auch auf negativem Weg.

In Vorbereitung eines Vortrags für die DNUG Leipzig, bin ich über etwas sehr eigenartiges gestolpert. So gibt es vom Isolation Framework NMock nicht nur eine Version sondern derer gleich 4. Nun gut, Versionierung gehört zum Alltagsgeschäft und ist wichtig. Was aber wenn diese Versionen von völlig unterschiedlichen Entwicklern stammen und über das Internet verstreut zu sein scheinen?

Tatsächlich aufmerksam geworden bin ich auf die Situation durch eine Antwort bei Codekicker. Ich hatte mich mit dem Vergleich von Moq, Rhino.Mocks, NMock 2.0 und TypeMock.Isolator beschäftigt. Dabei ist mir aufgefallen, dass NMock 2.0 keine Eventunterstützung mitbringt. Genauer gesagt, ist es für Fake-Objekte nicht möglich Events auszulösen. Tatsächlich gibt es diese Funktion bei NMock, aber erst in Version 2 und nicht schon in Version 2.0!

WTF?!? Es stimmt, Version 2 von NMock hat eine größere Funktionalität als Version 2.0 RC 2. So kann Version 2 beispielsweise auch Klassen faken, während die 2.0 nur Interfaces unterstützt. Entstanden sind diese Unterschiede wohl durch die verschiedenen Teams die daran mit gearbeitet haben bzw. mitarbeiten und demnach durch ihre unterschiedliche Herangehensweise.

Denn NMock 2.0 ist direkt aus NMock entstanden während NMock 2 von einem anderen Team entwickelt wurde, welches nun scheinbar auch an NMock 3 arbeitet. Ich bin nun nicht weiter nachgegangen mir anzusehen wie die einzelnen Teams tatsächlich zusammen hängen. Das wird schon dadurch erschwert, dass die meisten Leute nicht ihren eigenen Namen nutzen wenn sie im Internet auftreten. Da jedoch alle Projekte ihre eigenen Webseiten haben und ich in den Teams nicht viele gleichlautende Namen gefunden habe, gehe ich davon aus, dass es sich um unterschiedliche Leute handelt.

Da außerdem NMock 2.0 scheinbar nicht mehr gepflegt, NMock 2 auch nicht mehr wirklich betreut wird und sich Nummer 3 mit Moq und Rhino sowieso sehr großer Konkurenz gegenüber stehen sieht, werde ich in Zukunft auf alle Fälle die Finger davon lassen und kann jedem anderen nur empfehlen das Gleiche zu tun.

Der Grund warum ich das Post aber eigentlich schreibe ist, dass NMock, Moq und Rhino sehr häufig in Kombination genannt werden wenn es um Isolation Frameworks geht. Diese gemeinsame Nennung ist in meinen Augen nun aber nur noch gerechtfertigt wenn man ein schlechtes Beispiel braucht oder erklären möchte warum es sich manchmal lohnt statt einer kostenlosen Fassung eine kostenpflichtige mit entsprechendem Support zu nutzen.