2008-09-17 7 views
14

Was sind die besten Konventionen für die Benennung von Test-Assemblys in .NET (oder einer anderen Sprache oder Plattform)?.NET Testing Benennungskonventionen

Was ich in erster Linie aufgeteilt sind diese Optionen (bitte andere bieten!):

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

oder

  • Company.Website
  • Company.WebsiteTests

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

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

+2

Warum ist das geschlossen? Alle "meinungsbasierten" Antworten sind immer noch eine Antwort, bei der Benutzer eine Liste von Optionen anzeigen und wählen können, was sie für sie am besten finden. –

Antwort

18

werde ich mit

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

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

Wenn Sie Code teilen und in einer Lösung testen möchten, haben Sie diese Option trotzdem. z.B. Sie können eine Lösung mit

-Code Ordner

  • Company.Website

-Tests Ordner

  • Company.Website.Tests
+5

Auch müssen Sie nicht eine Verwendung für die Company.Website Namespace dies hinzufügen Weg. –

13

Ich persönlich würde mit

Company.Tests.Website

diese Weise können Sie im Innern einen gemeinsamen Test Namespace und Projekte geht nach der gleichen Struktur wie das aktuelle Projekt.

7

Ich habe eigentlich eine alternative parallele Wurzel.

Tests.Company.Website

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

+4

Warum der Downvote? Könnte der Kritiker darauf eingehen? Es ist so gut wie jede andere vorgeschlagene Lösung - und hat einen guten Punkt. –

+0

Dies führt jedoch zu Problemen mit referenzierten Namespaces. Es ist manchmal ein bisschen ein Kopfschmerz, warum ich SO für den vorgeschlagenen Weg suche .. (Ich habe nicht abgestimmt) – ppumkin

0

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

5

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

Company.Tests.Website.xxx

Company.Tests.Website.Controls

Wie Sie Ich denke an die Tests als eine parallele Namespace-Struktur zum Hauptcode und dies liefert Ihnen das.Es hat auch den Vorteil, dass, da nach wie vor der Namespace mit Ihrem Firmennamen beginnt Sie keine Namenskollisionen mit 3rd-Party-Bibliotheken

0

Ich ziehe es vor gehen mit haben sollte:

Company.Website.Tests

Ich interessiere mich nicht für Sub-Namespaces wie Company.Website.Controls, alle Tests gehen in den gleichen Namespace: Company.Website.Tests. Sie möchten nicht, dass Ihre Testnamespaces mit dem restlichen Code parallel sein müssen, da die Umgestaltung der Namespaces nur doppelt so lange dauert.

0

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

0

Wir verfolgen einen integrierten Ansatz:

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

diese Weise werden die Tests auf den Code der Nähe sind, die getestet wird, ohne zwischen den Projekten hin und her schalten zu müssen oder nach Referenzen zu suchen, um sicherzustellen, dass es einen Test gibt, der eine bestimmte Methode abdeckt. Wir müssen auch nicht zwei separate, aber identische Hierarchien pflegen.

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

Scheint zuerst etwas komisch, aber auf lange Sicht hat es wirklich gut für uns funktioniert.

1

I einrichten Auch bevorzugen Sie "Tests" vor dem eigentlichen Namen der Baugruppe so dass es leicht ist, alle meine Einheitentestbaugruppen alphabetisch zusammen aufgelistet zu sehen, wenn ich sie in Masse auswähle, um in NUNit oder was auch immer Test-Kabelbaum, den Sie verwenden, zu ziehen. So

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

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

0

Mit MVC beginnt in der .net Web-Entwicklungswelt Realität zu werden, würde ich anfangen, in diese Richtung zu denken. Denken Sie daran, dass M, V und C verschiedene Komponenten sind, also:

  • 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. Core enthält Controller, Helfer, die View-Schnittstellen usw. Core.Tests sind Ihre Tests für diesen Core. Das Modell ist für Ihr Datenmodell. Das Tolle daran ist, dass Ihre Modelltests Ihre datenbankspezifischen Tests automatisieren können.

Das mag für einige Leute zu viel werden, aber ich finde, dass es mir erlaubt, Probleme relativ einfach zu trennen.