Zurzeit gibt es eine Reihe verschiedener Mocking-Frameworks. Ich würde empfehlen, dass Sie entweder einen Blick auf RhinoMock oder TypeMock werfen. Beide sind für persönliche / Open-Source-Projekte kostenlos. TypeMock hat auch eine Unternehmenslizenz.
RhinoMock zwingt Sie dazu, Ihren Code für die Testbarkeit zu überarbeiten (falls erforderlich, wenn Sie bereits testbaren Code haben, sind Sie gut dran). Dies erfordert mehr Arbeit, aber es wird Sie mit Code verlassen, der lose gekoppelt ist, was an sich ein Segen ist. Aus diesem Grund gibt es bestimmte Konstrukte, die Sie mit Rhino nicht direkt nachbilden können. Sie können jedoch immer zusätzliche Ebenen der Indirektion einführen und das Problem auf diese Weise lösen. Die Quintessenz ist jedoch: Sie müssen etwas mehr Arbeit leisten, aber letztendlich wird das Refactoring Ihrem Code zugute kommen.
TypeMock hingegen modifiziert den Code on-the-fly (es verwendet die Profiler-API, um Code zu injizieren). Dadurch können Sie Mocking für Code einsetzen, der sich sonst nicht für diese Art von Tests eignet. Mit TypeMock können Sie so ziemlich alles mocken (außer mscorlib), so dass der Einstieg leicht ist und es gut mit Legacy-Code funktioniert. Da Sie jedoch nicht gezwungen sind, Ihren Code zu refaktorisieren, erhalten Sie nicht den zusätzlichen Vorteil der losen Kopplung von Typen. Außerdem führt TypeMock manchmal zu sehr merkwürdigen Fehlern, da der laufende Code verändert wird.