Ich frage mich, gibt es eine alternative lib zu der Shim-Funktion in Microsoft Fake Framework zur Verfügung gestellt, da es nur in der ultimativen Version unterstützt wird?
Nach meinem Kenntnisstand gibt es drei Frameworks, die es Ihnen erlauben, nicht-virtuelle Methoden und versiegelte Klassen wie Fakes Shims nachzuahmen. Es gibt
Sie sind alle kommerziell, weil sie die Profiling-API verwenden, die sehr haarig und schlecht dokumentiert ist, so dass die Codierung ein echter Schmerz ist.
Und für den Rekord bin ich alles für Fälschungen. Der meiste Code, an dem Leute arbeiten, ist Legacy-Code. Eine der Regeln für das Refactoring des Pragmatischen Programmierers besteht darin, sicherzustellen, dass Sie vor jedem Refactoring eine Einheitentestabdeckung haben, um eine Regression zu vermeiden. Dies macht Fakes und ähnliche Frameworks sehr nützlich, besonders wenn der Legacy-Code nicht für die Testfähigkeit geschrieben wurde.
Ja und für einen detaillierten Vergleich schaue hier:
Mock Framework vs MS Fakes Frameworks
Wie Sie aus Jim Coopers Antwort erfahren werden, sind die Fake-Assemblies eigentlich eine schlechte Sache und es gibt viel bessere Alternativen, z. welche Refactoring unterstützen und weniger Code benötigen (Generics verwenden).
Eine Open-Source-Alternative ist Prig . MIT lizensiert und immer noch aktiv - aber etwas hinterher mit VS IDE
Prig wurde nicht für die Arbeit mit VS 2017 aktualisiert, aber Pose funktioniert wirklich gut für das, was ich brauchte für (grundlegende Shimming von Environment.UserName
und DateTime.Now
und ähnlich), und hat eine wirklich schöne Schnittstelle:
Ich sollte beachten, dass ich viele Fehler bekomme, wenn ich ziemlich grundlegende Tests mache - rely gruselige Fehler wie "Common Language Runtime hat ein ungültiges Programm entdeckt", und "JIT Compiler hat eine interne Beschränkung gefunden". Also schütze Emptor.
Tags und Links microsoft-fakes