Frage

Ich bin daran interessiert zu sehen, ob ich die Art und Weise verbessern wir NUnit in einer Visual Studio-Lösung, die mehr als 30 Projekte verwendet werden.

Zuerst würden Sie haben eine Baugruppe von Tests für jede Baugruppe in der Lösung, oder würden Sie versuchen, die Anzahl von Testanordnungen zu halten? Ich begann viele Testanordnungen zu schaffen weg, aber ich denke, das ist uns eine Menge in Bezug auf die Build-Zeit kostet.

Zweitens, welche Strategie verwenden Sie diese Tests für die Verwaltung, die mit langer Laufzeit ist, oder erfordern spezielle Umgebungskonfiguration? Ich möchte ein MSBuild-Skript schreiben, das den Betrieb unserer Unit-Tests automatisiert, aber es muss über die Tests überspringen, die zu lange dauern würde oder auf dem Build-Maschine nicht funktionieren.

War es hilfreich?

Lösung

Um Ihre erste Frage zu beantworten:

Sie können mit Kategorien alles in einem halten organisiert einzelne Baugruppe, wenn das ist, wie Sie gehen möchten. Zur Frage, ob es auf Kompilierzeit abgeholzt würde, würde ich in vielleicht ahne, ich glaube nicht, dass es insgesamt eine riesige Menge obwohl sein würde.

Zur Beantwortung Ihrer zweiten:

Sie können mit Kategorien und die [Explicit] und [Ignore] Attribut NUnit zu sagen, welche Tests durchführen, und die Tests, die Sie ihm sagen müssen laufen, bevor es wird. Sie könnten auch an [Platform] oder einige der anderen Attribute aussehen wollen, je nachdem, was genau Ihre Anforderungen an die ‚Umwelt‘ sind.

Zum Beispiel könnten Sie einen expliziten Tag auf alle Ihren langen Lauftests hinzuzufügen. Dann würden Sie explizit diese Tests laufen müssen, NUnit werden sie nicht automatisch ausgeführt werden. Oder fügen Sie alle diese Tests auf eine Kategorie, dann, wenn Sie NUnit laufen, so sage es ausdrücklich nicht um diese Kategorie ausgeführt werden.

Andere Tipps

Für Ihren Fall würde ich es ein paar Optionen hinstellen:

  • Konsolidieren Sie Ihre bestehenden Projekte zu weniger Einsen, damit entsprechende Testprojekte für sie Konsolidierung - Versuchen Sie, wenn Sie wirklich 30 Projekte benötigen (zB 30 Baugruppen) oder wenn es besser ist, einfach kombinieren sie die Anzahl der Abhängigkeiten zu erleichtern und Zeit zu bauen.

  • in den entsprechenden Projekt Legen Sie Ihre Tests - Während dies eine heftige Reaktion auslösen, denken Sie daran: in Anbetracht der großen Anzahl von Tests den Aufwand für immer eine etwas größere Montage beteiligt sein könnte wert der reduzierte Aufwand für Sie tatsächlich die doppelte Anzahl von Projekten verwalten müssen.

  • alle Unit-Tests in einigen Projekten kombinieren - Wenn Sie unnachgiebig sind über jede Montage sauber und getrennt zu halten, können Sie einfach alle Unit-Tests kombinieren entscheiden, wahrscheinlich in Bezug auf von Relevanz miteinander.

Folglich könnten Sie auch Lösungskonfigurationen machen, die Unit-Tests nicht enthalten - wenn Build-Zeit so viel von einer Sorge zu Ihnen ist. Dies ist besonders nützlich, wenn Sie gerade laufenden Tests auf Anfrage . Wenn Sie die kontinuierliche Integration verwenden, sollte es kein Problem sein. Sie mehrere CI-Konfigurationen haben können, einige der Gebäude Tests umfassen einige, die dies nicht tun

Dies ist eine große Frage, und wirft einige Bedenken, dass ich über die Verwaltung von großem Satz von Unit-Tests für lange läuft, große Projekte.

Meine Strategie ist eine Unit-Test-Projekt für jedes Projekt in Ihrer Lösung zu haben, die Unternehmen oder Rahmen ist im Zusammenhang. Unit-Tests sind schlecht geeignet, um die UI-Aspekte eines Projektes zu testen und ich lasse dies in der Regel zu scipted Tests. Das Projekt wird gebaut eine kontinuierliche Integration (CI) Server verwenden, die jedes Mal, wenn ein Entwickler ein Stück Arbeit abgefeuert wird. Der CI-Server läuft auch alle von dem Unit-Test als auch Erzeugungseinheit Testabdeckung Statistiken. Die CI-Umgebung verwendet MSBuild, um die Lösung zu bauen.

Im Laufe der Zeit ist es wert, die Beurteilung, ob alle Ihre Unit-Tests notwendig sind. Ein großer Teil der Regressionstests Anstrengungen konzentrieren sich auf scripted Tests verschieben und die Overhead-Unit-Tests der Aufrechterhaltung kann teuer werden. Idealerweise würde ich alle Unit-Tests gerne über die gesamte Lebensdauer des Projekts beibehalten werden, aber der Kopfwartungs manchmal unerschwinglich sein kann. Als Faustregel gilt: Unit-Tests sind für Geschäftsregeln und die Lösung Rahmen beibehalten, aber nicht für UI, Reporting oder Workflow. Offensichtlich wird dies auf die Einzelheiten des Projekts ab.

Wie Nebenbei bemerkt, wir finden TestDriven.Net eine ausgezeichnete Visual Studio-Add-In Frontend für NUnit sein kostenlos für Open-Source-Einsatz / Studenten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top