2008-08-05 27 views

Antwort

7

Wir verwenden MbUnit und Rihno Mocks und sie funktionieren sehr gut zusammen. Wenn Sie TDD tun, werden Sie fast sicher eine Form der Abhängigkeitsinjektion durchführen müssen, während dies manuell durchgeführt werden kann. Es lohnt sich, einen IoC-Container wie Castle Windsor zu betrachten.

Es lohnt sich, John Paul Bodhoods Bildschirmdarstellungen zu betrachten, um loszulegen. JPB's Blog

2

NUnit ist immer ein Liebling von mir. Wenn Sie jedoch TFS als Quellcodeverwaltung verwenden, schlage ich vor, dass Sie sich an den Microsoft-Stack halten.

+0

Es gibt keine zwingenden Gründe, MS Test über NUnit oder MbUnit zu verwenden. Es ist flach ein minderwertiges Werkzeug. –

+0

abgeordnet. Meine Empfehlung ist MbUnit. –

+0

Das war nicht mein Punkt mit MS Test, es gibt eine Menge schöner Surger, die TFS gibt, wenn Sie MS Test kombinieren. –

4

Für eine Mock-Objekt-Bibliothek habe ich die BSD-lizenzierte Rhino.Mocks als sehr gefällig gefunden.

3

NUnit finden Sie unter http://www.nunit.org ich dies auch bei der Arbeit an der MS-Stack vorschlagen würde - die Unterstützung für Nicht-MS-Frameworks geschieht in der MVC-Vorschau, die eine bestimmte Bewegung in die richtige Richtung zeigt uns alle zu ermöglichen, um unsere Stacks individuell anzupassen.

4

Ich hatte großen Erfolg mit NUnit als auch.

Ich habe auch NMock verwendet, wenn die Notwendigkeit für Mock-Objekte entstand. Als zusätzlichen Bonus wird die Factory zum Erstellen Ihrer Mock-Objekte als Spickzettel bezeichnet.

Um das Ausführen von Komponententests zu erleichtern, habe ich TestDriven.NET verwendet, um Komponententests auszuführen, wie ich codiert habe. Außerdem habe ich Cruise Control .NET verwendet, um SVN zu beobachten und zu überprüfen, dass jedes neue Commit alle Komponententests erstellt und übergibt.

+0

NMocks übermäßige Verwendung von magischen Strings macht es zu einer schlechten Wahl für ein spöttisches Framework. RhinoMocks oder Moq sind die bessere Wahl, da sie auf starke Typisierung angewiesen sind. –

3

Die Verwendung von nUnit mit TFS ist nicht allzu schwierig. Es gibt sogar ein Projekt über Codeplex, um dies zu implementieren: NUnit for Team Build, das sogar die Ergebnisse im Lager "veröffentlicht".

Ich habe es nicht versucht - aber ich würde Kunden empfehlen, die eine große Investition (oder eine starke Präferenz für das MSTest-Tool) in nUnit haben, die an der Implementierung von TFS interessiert sind, um mit nUnit weiterzumachen versuchen, alle ihre vorhandenen Tests zu konvertieren.

9

NUnit und Rhino Anzug gut und die auto-mocking container könnte von Interesse sein.

Wenn Sie auch BDD betrachten, dann ist NBehave wahrscheinlich eine gute Wahl. Wenn Sie aber nur den Stil von BDD meinen, der sich auf Komponententests bezieht (xSpec), können Sie trotzdem ein Framework hinzufügen (obwohl Dinge wie specunit etwas synctaktischen Zucker hinzufügen), aber Sie könnten auch MSpec interessiert sein.

3

Ich werde für Moq einen Ruf herausgeben müssen. Es ist ein sauberes Licht spöttischen Rahmen, der Sie in die Grube des Erfolgs führt.

Die Test-Tools in TFS sind in Ordnung, sie werden die Arbeit erledigen, aber oft ein wenig umständlich sein, mit zu arbeiten. Die generierten Berichte, Code-Coverage und ein paar andere Portionen sind besonders schlecht, sie lassen dich mit 22 anstelle von 50 kahl werden.

Wenn Sie das Testen wirklich lieben, sollten Sie versuchen, Continuous Integration zu versuchen. Sie werden den Schmerz durch die Regression schnell spüren und möglicherweise dazu beitragen, dass Sie schneller zum Ziel kommen.

Unabhängig davon, was Sie tun, versuchen Sie ein paar und sehen, welches ist das natürlichste, wenn Sie Zeit haben. Viel Glück und gute Programmierung.

+0

Das Problem mit Moq ist, dass es .NET 3.5 erfordert, da es Lambda-Ausdrücke und Ausdrücke verwendet. –

+0

Nicht unbedingt eine schreckliche Sache, aber Sie haben Recht, das würde einen v2.0 Shop zurückhalten. – smaclell

4

Dies ist wahrscheinlich eine Zusammenfassung von dem, was bereits gesagt wurde, aber für TDD benutze ich persönlich Rhino Mocks und MBUnit. Rhino Mocks ist ein spottendes Framework, das frei und Open Source ist. Der Vorteil von Rhino Mocks ist, dass wir keine Zaubersprüche verwenden müssen, um Ihre Erwartungen zu erfüllen, wie Sie es in NMock tun.

Ich mag MBUnit, weil MbUnit das Konzept der RowTests hat, mit denen Sie Ihre Eingaben zu Ihrer Testmethode variieren können. MBUnit ist ebenfalls frei verfügbar.

Sie möchten auch sicherstellen, dass alles, was Sie für Ihr Einheitentestframework wählen, von Ihrem CI (Continuous Integration Server) unterstützt wird. Nunit wird standardmäßig in Cruise Control.NET unterstützt und Sie müssen etwas mehr arbeiten, damit MBUnit in ccnet funktioniert.

Aus IDE-Sicht müssen Sie TestDriven.NET haben. Mit TestDriven.NET können Sie mit der rechten Maustaste klicken und Tests in der IDE ausführen und es unterstützt MBUnit und Nunit und andere.

NBehave ist die BDD-Bibliothek, die ich verwendet habe. Ich habe keine anderen verwendet, so dass ich sie nicht mit Ihnen vergleichen und abgleichen konnte, aber NBehave wird von Gallio vom MBUnit-Team unterstützt, was bedeutet, dass Sie Ihre BDD-Tests genauso ausführen können, wie Ihre Unit Tests mit TestDriven.NET.

Ich würde auch Resharper empfehlen. Mit diesem Refactoring- und Guidance-Tool werden Sie Ihre Produktivität deutlich steigern können. Es unterstützt Sie beim Ändern Ihres Codes, während Sie Ihre Tests entwickeln.

hoffe, das hilft

2

Ich empfehle die folgenden:

TestDriven.NET - Unit Testing Ergänzung für VS, die vollständig mit allen wichtigen Unit-Test-Frameworks einschließlich NUnit, MbUnit usw. integriert ist ...

Typemock Trenner - Ein Mockframework für .Net Unit Testing

NUnit - Ein Open-Source-Unit-Testframework in C#.

2

für mein Projekt, habe ich NUnit und TestDriven.NET mit großem Erfolg. Sie können entweder eine separate Bibliothek erstellen, um Ihren Testcode zu hosten, oder Sie können sie in Ihre ausführbare Datei oder Bibliothek einfügen. Es hängt alles davon ab, ob Ihr Produktionscode mit Ihrem Testcode verknüpft werden soll.

Für Dependency Injection verwende ich NInject in meinem aktuellen Projekt und seine Arbeit großartig. Wenn Sie die Contructor-Injektion verwenden, müssen Sie Ihren Code nicht mit dem Attribut [Inject] überladen.

Ich habe nicht ein Mock-Bibliothek für meine .NET 2.0-Projekt, aber für eine andere .NET 3.5 Projekt verwende ich Moq

Beachten Sie, dass all dies funktioniert mit .NET 2.0 und höher verwendet. (außer Moq)