2008-09-17 17 views
14

¿Cuáles son las mejores convenciones para nombrar ensambles de prueba en .NET (o en cualquier otro idioma o plataforma)?Convenciones de nomenclatura para pruebas .NET

Lo que estoy dividido principalmente entre estas opciones son (indique los demás!):

  • Company.Website - proyecto
  • Company.Website.Tests

o

  • Company.Website
  • Company.WebsiteTests

El problema con la primera solución es que parece que .Tests son un sub-espacio de nombres para el sitio, mientras que en realidad son más paralelo en mi mente. ¿Qué sucede cuando entra en juego un nuevo espacio de nombre secundario, como Company.Website.Controls, donde debería poner las pruebas para ese espacio de nombres, por ejemplo?

tal vez debería incluso ser: Tests.Company.Website y Tests.Company.Website.Controls, y así sucesivamente.

+2

¿Por qué está cerrado? Toda respuesta basada en la opinión sigue siendo una respuesta donde los usuarios pueden ver una lista de opciones y elegir lo que creen que es mejor para ellas. –

Respuesta

18

iré con

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

La corta la razón y la respuesta es simple, pruebas y proyectos están vinculados en el código, por lo que debe compartir espacio de nombres.

Si quiere dividir el código y probarlo en una solución, tiene esa opción de todos modos. p.ej. puede configurar una solución con

-Code carpeta

  • Company.Website

-Pruebas carpeta

  • Company.Website.Tests
+5

También no es necesario agregar un uso para el espacio de nombres de la Compañía. camino. –

13

yo personalmente iría con

Company.Tests.Website

esa manera usted tiene un espacio de nombres de pruebas y proyectos comunes dentro de él, siguiendo la misma estructura que el proyecto real.

7

De hecho, tengo una raíz paralela alternativa.

Tests.Company.Website

Funciona muy bien para eliminar la ambigüedad cosas cuando tiene nuevos espacios de nombres de sub.

+4

¿Por qué el voto a favor? ¿Podría el crítico dar más detalles sobre eso? Es tan bueno como cualquier otra solución propuesta, y tiene un buen punto. –

+0

Sin embargo, esto causa problemas con espacios de nombres referenciados. A veces es un poco dolor de cabeza, porque busco la manera de sugerirlo ... (no voté) – ppumkin

0

que normalmente, el nombre del proyecto proyectos de prueba-test por razones de brevedad, en el Explorador de soluciones, y utilizo Company.Namespace.Tests de espacios de nombres.

5

Soy un gran fan de la estructuración del espacio de nombres de prueba como esta:

Company.Tests.Website.xxx

Company.Tests.Website.Controls

Al igual que usted , Pienso en las pruebas como una estructura de espacio de nombres paralela al código principal y esto te proporciona eso.También tiene la ventaja de que, puesto que el espacio de nombres sigue comienza con su nombre de la empresa que no debería tener ningún colisiones de nombres con las bibliotecas 3 ª parte

0

prefiero ir con:

Company.Website.Tests

No me importan los espacios de nombres como Company.Website.Controls, todas las pruebas entran en el mismo espacio de nombres: Company.Website.Tests. No desea que los espacios de nombres de prueba TENGAN que estar en paralelo con el resto del código, ya que solo hace que los espacios de nombres de refactorización tarden el doble.

0

prefiero Company.Website.Spec y suelen tener un proyecto de prueba por solución

0

Seguimos un enfoque integrado:

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

De esta manera las pruebas están cerca del código que se está probando, sin tener que alternar entre proyectos o buscar referencias para garantizar que haya una prueba que cubra un método en particular. Tampoco tenemos que mantener dos jerarquías separadas, sino idénticas.

También podemos probar distintas partes del código a medida que mejoramos y desarrollamos.

Parece un poco extraño al principio, pero a largo plazo nos ha funcionado muy bien.

1

I también prefiere "Pruebas" que prefijan el nombre real del ensamblaje de modo que es fácil ver todas las unidades de prueba de mi unidad en orden alfabético juntas cuando las selecciono en masa para incorporarlas a NUNit o al arnés de prueba que esté utilizando.

Así que si Sitio web, eran el nombre de mi solución (y montajes), que sugieren -

Tests.Website.dll para ir junto con el conjunto actual código Website.dll

0

Con MVC empezando a convertirse en una realidad en el mundo del desarrollo web .net, comenzaría a pensar en esa línea. Recuerde que M, V y C son componentes distintos, entonces:

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

El sitio web es su vista liviana. Core contiene controladores, ayudantes, interfaces de visualización, etc. Core.Tests son sus pruebas para dicho Core. El modelo es para su modelo de datos. Lo bueno de esto es que las pruebas de su modelo pueden automatizar las pruebas específicas de su base de datos.

Esto puede ser excesivo para algunas personas, pero me parece que me permite separar las preocupaciones con bastante facilidad.

Cuestiones relacionadas