Frage

Was sind die besten Konventionen der Namensgebung Testanordnungen in .NET (oder einer anderen Sprache oder Plattform) sind?

Was ich in erster Linie geteilt zwischen diesen Optionen (bitte andere!) Sind:

  • Company.Website - das Projekt
  • Company.Website.Tests

oder

  • Company.Website
  • Company.WebsiteTests

Das Problem mit der ersten Lösung ist, dass es aussieht wie .Tests ein Teilnamespace auf die Website ist, während sie wirklich mehr parallel in meinem Kopf sind. Was passiert, wenn ein neuer Unternamensraum ins Spiel kommt, wie Company.Website.Controls , wo soll ich die Tests für diesen Namespace setzen, zum Beispiel?

Vielleicht sollte es auch sein. Tests.Company.Website und Tests.Company.Website.Controls und so weiter

War es hilfreich?

Lösung

Ich gehe mit

* Company.Website - the project
* Company.Website.Tests

Der kurze Grund und Antwort ist einfach, das Testen und Projekt in Code verknüpft, daher sollte es Namensraum teilen.

Wenn Sie Spalten von Code und Test in einer Lösung wollen, müssen Sie diese Option auf jeden Fall. z.B. Sie können eine Lösung mit

einrichten

-Code Ordner

  • Company.Website

-Tests Ordner

  • Company.Website.Tests

Andere Tipps

Ich persönlich würde mit

Company.Tests.Website

Auf diese Weise haben Sie einen gemeinsamen Tests Namespace und Projekte im Innern, im Anschluss an der gleichen Struktur wie das aktuelle Projekt.

Ich habe tatsächlich eine alternative parallel Wurzel.

Tests.Company.Website

Es funktioniert gut für disambiguating Dinge, wenn Sie neue Unternamensräumen haben.

Ich bin ein großer Fan von dem Test-Namespace wie folgt strukturiert:

Company.Tests.Website.xxx

Company.Tests.Website.Controls

Wie Sie, ich glaube, der Tests als Parallelstruktur Namespace mit dem Hauptcode und dies bietet Ihnen mit diesem. Es hat auch den Vorteil, dass, da nach wie vor der Namespace mit Ihrem Firmennamen beginnt Sie keine Namenskollisionen mit 3rd-Party-Bibliotheken haben sollte

Ich ziehe es zu „Tests“, um den tatsächlichen Namen der Assembly prefixing, so dass ihre leicht alphabetisch zusammen aufgeführt alle meine Einheit Testanordnungen, um zu sehen, wenn ich sie in Massen wählen in nUnit zu ziehen oder was auch immer Prüfkabelbaum Sie verwenden.

Also, wenn Webseite der Name meiner Lösung (und Baugruppen) war, schlage ich vor, -

Tests.Website.dll mit der eigentlichen Code-Anordnung gehen zusammen Website.dll

Wir verfolgen einen integrierten Ansatz:

Company.Namespace.Test
Company.Namespace.Data.Test

Auf diese Weise sind die Tests der Nähe zu dem Code, der getestet wird, ohne hin und her zwischen den Projekten wechseln oder mit Referenzen jagen um sicherzustellen, dass ein Test ist ein bestimmtes Verfahren abdecken. Wir müssen auch nicht zwei getrennte zu halten, sondern identisch, Hierarchien.

Wir können auch verschiedene Teile des Codes testen, wie wir verbessern und entwickeln.

Es scheint ein wenig auf den ersten seltsam, aber auf lange Sicht ist es wirklich gut für uns gearbeitet.

ich in der Regel nennen Testprojekte Projekt-Tests der Kürze halber in Projektmappen-Explorer, und ich verwende Company.Namespace.Tests für Namensräume.

Ich ziehe es vor gehen mit:

Company.Website.Tests

ich über alle Unternamensräumen wie Company.Website.Controls sie sich nicht, gehen alle Tests in den gleichen Namensraum: Company.Website.Tests. Sie wollen nicht Ihr Test-Namespaces in parrallel mit dem Rest des Codes zu haben, weil es macht einfach Refactoring Namensräume doppelt so lange dauern.

Ich ziehe Company.Website.Spec und haben in der Regel ein Testprojekt pro Lösung

Mit MVC eine Realität in der .net Web-Entwicklung Welt zu werden beginnen, würde ich in diese Richtung zu denken beginnen. Denken Sie daran, dass M, V und C sind verschiedene Komponenten, so:

  • Company.Namespace.Website
  • Company.Namespace.Website.Core
  • Company.Namspance.Website.Core.Tests
  • Company.Namespace.Website.Model
  • Company.Namespace.Website.Model.Tests

Website ist Ihre leichte Ansicht. Kern enthält Controller, Helfer, die Ansicht Schnittstellen usw. Core.Tests sind die Tests für den Kern. Das Modell ist für Ihr Datenmodell. Die kühle Sache hier ist, dass Ihr Modell testet Ihre Datenbank spezifische Tests automatisieren kann.

Das kann für manche Menschen zu viel des Guten, aber ich finde, dass es mir erlaubt, Bedenken zu trennen ziemlich leicht.

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