Gute und kostenlose Unit-Testing-Alternativen zu JustMock von Telerik

Was sind die wenigen guten und kostenlosen Unit-Testing-Alternativen zur Telerik JustMock-Bibliothek/Tool für Unit-Tests in C#.

Hier möchte ich eine Alternative nicht nur für JustMock lite, sondern auch für die kostenpflichtige JustMockVersion kennen, die erweiterte Spottfunktionen (wie das Spotten von statischen, endgültigen, versiegelten, Erweiterungsmethoden) usw. bietet.

Wir werden viel mehr Informationen brauchen, um hier gute Empfehlungen geben zu können. Bitte schauen Sie sich Was ist erforderlich, damit eine Frage "genügend Informationen" enthält? Bearbeiten Sie dann bitte Ihre Frage und prüfen Sie, ob Sie einige dieser Verbesserungen integrieren können. Wie, welche Funktionen benötigen Sie? Auf welchen Betriebssystemen müssen Sie es ausführen usw.

Antworten (3)

Nicht ideal und nicht völlig kostenlos, aber wenn Sie Visual Studio Premium oder Ultimate haben, ist Microsoft Fakes enthalten, ein weiteres Profiler-basiertes Mocking-Framework, das solche Funktionen bereitstellt. In den niedrigeren Editionen von VS kann es nicht installiert werden, in den oberen ist es jedoch frei verfügbar. Keine Ahnung, ob das für dich "kostenlos genug" ist. Werfen Sie einen Blick auf diese Fragen und Artikel dazu:

https://stackoverflow.com/questions/21847835/how-do-install-microsoft-fakes-unit-test-isolation-on-vs-2013-professional-edi

http://www.dotnetcurry.com/showarticle.aspx?ID=963

Meiner Meinung nach zeigt jedoch die Notwendigkeit solcher "erhöhter" Funktionen ein fehlerhaftes Design im zu testenden Code, das isolierte Komponententests ausschließt. Code, der statische Methoden direkt aufruft, wird immer solche Probleme haben, und die typische Lösung besteht darin, stattdessen Dependency Injection zu verwenden, statische Aufrufe hinter einer Schnittstelle zu entkoppeln und sie anschließend zu injizieren und zu verspotten (aber eine Diskussion darüber ist für diese Site nicht relevant, StackOverflow ist besser dafür geeignet). Für diese Situationen verwende ich sowohl Moq als auch NSubstitute , beide sind viel einfachere Proxy-basierte Mock-Frameworks.

Sie könnten gängige Mocking-Frameworks wie FakeItEasy oder Moq verwenden und einige Ihrer „erweiterten“ Szenarien mit Tools wie Ionad.Fody und EnableFaking.Fody lösen . Diese modifizieren den kompilierten IL-Code (Weaving), damit Sie ihn verspotten können. Es gibt jedoch Einschränkungen, und Sie werden höchstwahrscheinlich nicht in der Lage sein, alle Ihre erweiterten Anforderungen zu erfüllen.

Eine völlig kostenlose Möglichkeit ist Prig , das sogar Open Source ist. Es ist vielleicht etwas weniger benutzerfreundlich als die kommerziellen Alternativen, scheint aber recht gut zu funktionieren. Beachten Sie, dass, wenn die Signatur der Methode nicht mit einem der vordefinierten Delegaten übereinstimmt, die Methode automatisch nicht generiert wird, um sie zu simulieren – Sie müssen den fehlenden Delegattyp wie hier beschrieben manuell definieren