test - Convenciones de nomenclatura para pruebas.NET
test naming convention java (10)
De hecho, tengo una raíz paralela alternativa.
Tests.Company.Website
Funciona muy bien para la desambiguación de cosas cuando tienes nuevos espacios de nombres secundarios.
¿Cuáles son las mejores convenciones para nombrar ensambles de prueba en .NET (o cualquier otro idioma o plataforma)?
Lo que principalmente me divierto entre estas opciones (¡por favor, proporcione a los demás!):
- Company.Website - el proyecto
- Company.Website.Tests
o
- Página Web de la compañía
- Company.WebsiteTests
El problema con la primera solución es que parece. Los exámenes son un espacio de nombres secundario para el sitio, mientras que realmente son más paralelos en mi mente. ¿Qué sucede cuando entra en juego un nuevo subnombre de nombre, como Company.Website.Controls , donde debería poner las pruebas para ese espacio de nombres, por ejemplo?
Tal vez debería ser incluso: Tests.Company.Website y Tests.Company.Website.Controls , y así sucesivamente.
Iré con
* Company.Website - the project
* Company.Website.Tests
La razón y la respuesta cortas son simples, las pruebas y el proyecto están vinculados en el código, por lo tanto, debe compartir el espacio de nombres.
Si quieres dividir el código y probar en una solución, tienes esa opción de todos modos. por ejemplo, puede configurar una solución con
Carpeta de código
- Página Web de la compañía
Carpeta de resultados
- Company.Website.Tests
Normalmente llamo proyectos de prueba Project-Tests por brevedad en Solution Explorer, y uso Company.Namespace.Test para espacios de nombres.
Prefiero Company.Website.Spec y generalmente tengo un proyecto de prueba por solución
Prefiero ir con:
Company.Website.Tests
No me importan los espacios de nombres secundarios como Company.Website.Controls, todas las pruebas entran en el mismo espacio de nombres: Company.Website.Tests. No desea que sus espacios de nombres de prueba TENGAN que estar en paralelo con el resto de su código, ya que solo hace que los espacios de nombres de refactorización tarden el doble.
Soy un gran fan de estructurar el espacio de nombres de prueba de esta manera:
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 le proporciona eso. También tiene la ventaja de que, dado que el espacio de nombres aún comienza con el nombre de su empresa, no debería tener colisiones de nombres con bibliotecas de terceros.
Yo personalmente iría con
Company.Tests.Website
De esta forma, tiene un espacio de nombres y proyectos de pruebas comunes dentro de él, siguiendo la misma estructura que el proyecto real.
Yo también prefiero las "Pruebas" prefijando el nombre real del ensamblaje para que sea fácil ver todas las unidades de prueba de mi unidad en orden alfabético juntas cuando las seleccione en masa para incorporarlas a NUNit o al arnés de prueba que esté utilizando.
Entonces, si el sitio web fuera el nombre de mi solución (y ensamblajes), sugiero
Tests.Website.dll para ir junto con el código actual del sitio web Assembly.Dll
Con MVC comenzando 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.Website
- Company.Namespace.Website.Core
- Company.Namspance.Website.Core.Tests
- Company.Namespace.Website.Model
- Company.Namespace.Website.Model.Tests
El sitio web es su punto de vista liviano. Core contiene controladores, ayudantes, interfaces de visualización, etc. Core.Tests son tus 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 preocupaciones con bastante facilidad.
Seguimos un enfoque integrado:
Company.Namespace.Test
Company.Namespace.Data.Test
De esta forma, las pruebas se acercan al 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 raro al principio, pero a largo plazo nos ha funcionado muy bien.