Domanda

Quali sono le migliori convenzioni per denominare gli assembly di test in .NET (o qualsiasi altro linguaggio o piattaforma)?

Ciò su cui sono principalmente diviso sono queste opzioni (per favore forniscine altre!):

  • Sito web aziendale - il progetto
  • Azienda.Sito.Test

O

  • Sito web aziendale
  • Company.WebsiteTest

Il problema con la prima soluzione è che sembra che .Tests sia uno spazio dei nomi secondario del sito, mentre nella mia mente sono più paralleli.Cosa succede quando entra in gioco un nuovo spazio dei nomi secondario, ad esempio Azienda.Sito.Controlli, dove dovrei inserire i test per quello spazio dei nomi, ad esempio?

Forse dovrebbe anche essere: Test.Azienda.Sito web E Test.Azienda.Sito.Controlli, e così via.

È stato utile?

Soluzione

andrò con

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

Il breve motivo e la risposta sono semplici, test e progetto sono collegati nel codice, quindi dovrebbero condividere lo spazio dei nomi.

Se desideri dividere il codice e testarlo in una soluzione, hai comunque questa opzione.per esempio.puoi impostare una soluzione con

-Cartella dei codici

  • Sito web aziendale

-Cartella Test

  • Azienda.Sito.Test

Altri suggerimenti

Personalmente ci andrei

Azienda.Test.Sito web

In questo modo hai uno spazio dei nomi di test comune e progetti al suo interno, seguendo la stessa struttura del progetto reale.

In realtà ho una radice parallela alternativa.

Test.Azienda.Sito web

Funziona bene per chiarire le ambiguità quando si hanno nuovi spazi dei nomi secondari.

Sono un grande fan della strutturazione dello spazio dei nomi di test in questo modo:

Azienda.Test.Sito Web.xxx

Azienda.Test.Sito.Controlli

Come te, penso ai test come a una struttura dello spazio dei nomi parallela al codice principale e questo te lo fornisce.Ha anche il vantaggio che, poiché lo spazio dei nomi inizia comunque con il nome della tua azienda, non dovresti avere conflitti di denominazione con librerie di terze parti

Anch'io preferisco "Test" anteponendo il nome effettivo dell'assembly in modo che sia facile vedere tutti i miei assiemi di test unitari elencati in ordine alfabetico insieme quando li seleziono in massa per inserirli in NUNit o qualunque cablaggio di test tu stia utilizzando.

Quindi, se Sito Web fosse il nome della mia soluzione (e dei miei assiemi), suggerisco:

Tests.Website.dll per andare avanti con l'effettivo assemblaggio del codice Sito Web.Dll

Seguiamo un approccio integrato:

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

In questo modo i test sono vicini al codice che viene testato, senza dover passare da un progetto all'altro o cercare riferimenti per assicurarsi che esista un test che copre un metodo particolare.Inoltre, non dobbiamo mantenere due gerarchie separate, ma identiche.

Possiamo anche testare parti distinte del codice mentre miglioriamo e sviluppiamo.

All'inizio sembra un po' strano, ma a lungo termine ha funzionato davvero bene per noi.

Di solito nomino i progetti di test Test di progetto per brevità in Solution Explorer e utilizzo Company.Namespace.Tests per gli spazi dei nomi.

Preferisco andare con:

Azienda.Sito.Test

Non mi interessano i sottospazi dei nomi come Company.Website.Controls, tutti i test vanno nello stesso spazio dei nomi:Azienda.Sito.Test.Non vuoi che i tuoi spazi dei nomi di test DEVONO essere in parallelo con il resto del tuo codice perché fa semplicemente sì che il refactoring degli spazi dei nomi richieda il doppio del tempo.

Preferisco Company.Website.Spec e di solito ho un progetto di test per soluzione

Con MVC che inizia a diventare una realtà nel mondo dello sviluppo web .net, inizierei a pensare in questo senso.Ricordiamo che M, V e C sono componenti distinte, quindi:

  • Azienda.Spazio dei nomi.Sito web
  • Azienda.Spazio dei nomi.Sito web.Core
  • Azienda.Namspance.Website.Core.Tests
  • Azienda.Spazio dei nomi.Sito web.Modello
  • Azienda.Spazio dei nomi.Sito web.Modello.Test

Il sito web è la tua visione leggera.Il core contiene controller, helper, interfacce di visualizzazione, ecc.Core.Tests sono i test per detto Core.Il modello è per il tuo modello di dati.La cosa interessante qui è che i test del modello possono automatizzare i test specifici del database.

Questo potrebbe essere eccessivo per alcune persone, ma trovo che mi permetta di separare le preoccupazioni abbastanza facilmente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top