Pregunta

¿Cuáles son las mejores convenciones para nombrar conjuntos de prueba en .NET (o cualquier otro lenguaje o plataforma)?

En lo que estoy dividido principalmente son estas opciones (¡proporcione otras!):

  • Página Web de la compañía - el proyecto
  • Empresa.Sitio.Pruebas.

o

  • Página Web de la compañía
  • Empresa.Pruebas del sitio web

El problema con la primera solución es que parece que .Tests es un subespacio de nombres del sitio, mientras que en mi opinión, en realidad son más paralelos.¿Qué sucede cuando entra en juego un nuevo subespacio de nombres, como Controles.del.sitio.web.de.la.empresa., ¿dónde debería colocar las pruebas para ese espacio de nombres, por ejemplo?

Quizás incluso debería ser: Pruebas.Empresa.Sitio web y Pruebas.Empresa.Controles.del.sitio web, etcétera.

¿Fue útil?

Solución

voy a ir con

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

La razón breve y la respuesta son simples: las pruebas y el proyecto están vinculados en el código, por lo tanto, deben compartir el espacio de nombres.

Si desea dividir el código y probar una solución, tiene esa opción de todos modos.p.ej.puedes configurar una solución con

-Carpeta de código

  • Página Web de la compañía

-Carpeta de pruebas

  • Empresa.Sitio.Pruebas.

Otros consejos

Yo personalmente iría con

Empresa.Pruebas.Sitio web

De esa manera, tendrá un espacio de nombres de pruebas común y proyectos dentro de él, siguiendo la misma estructura que el proyecto real.

De hecho, tengo una raíz paralela alternativa.

Pruebas.Empresa.Sitio web

Funciona muy bien para eliminar ambigüedades cuando tienes nuevos subespacios de nombres.

Soy un gran admirador de estructurar el espacio de nombres de prueba de esta manera:

Empresa.Pruebas.Sitio web.xxx

Empresa.Pruebas.Controles.del.sitio web

Al igual que usted, pienso en las pruebas como una estructura de espacio de nombres paralela al código principal y esto se lo proporciona.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 haber colisiones de nombres con bibliotecas de terceros.

Yo también prefiero que "Pruebas" anteponga el nombre real del ensamblaje para que sea fácil ver todos mis ensamblajes de pruebas unitarias enumerados alfabéticamente cuando los selecciono en masa para ingresar a NUNit o cualquier arnés de prueba que esté utilizando.

Entonces, si Sitio web fuera el nombre de mi solución (y ensamblajes), sugiero:

Pruebas.Website.dll para ir junto con el código ensamblador real sitio web.dll

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 pero 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.

Normalmente nombro proyectos de prueba. Pruebas de proyecto por brevedad en el Explorador de soluciones, y uso Empresa.Espacio de nombres.Pruebas para espacios de nombres.

Prefiero ir con:

Empresa.Sitio.Pruebas.

No me importan los subespacios de nombres como Company.Website.Controls, todas las pruebas van al mismo espacio de nombres:Pruebas.del.sitio.web.de.la.empresa.No desea que sus espacios de nombres de prueba DEBEN estar en paralelo con el resto de su código porque esto simplemente hace que la refactorización de los espacios de nombres tome el doble de tiempo.

Prefiero Company.Website.Spec y normalmente tengo un proyecto de prueba por solución

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

  • Empresa.Espacio de nombres.Sitio web
  • Empresa.Espacio de nombres.Sitio web.Núcleo
  • Empresa.Namspance.Sitio web.Pruebas.centrales
  • Empresa.Espacio de nombres.Sitio web.Modelo
  • Empresa.Espacio de nombres.Sitio web.Modelo.Pruebas

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 aquí es que las pruebas de su modelo pueden automatizar las pruebas específicas de su base de datos.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top