visual unit tests test studio run generate ejemplo .net unit-testing project-structure

tests - Las pruebas unitarias deben estar en su propio proyecto en una solución.Net



visual studio 2017 unit test project (5)

1 proyecto de prueba por solución con carpetas => regresión / integración / unidad que tiene subcarpetas que "refleja" su proyecto de solución / arquitectura de carpetas.

Recuerde: las pruebas no son su código de producción. Deben estar separados.

¿Debo comenzar un nuevo proyecto para mis pruebas unitarias? Eso significaría que obtendría dos ejecutables correcto? Entonces estoy preocupado por la organización del espacio de nombres. ¿Podré poner la prueba de la unidad en los mismos espacios de nombres que las clases que están evaluando a pesar de que son parte de un proyecto diferente?

Esto plantea otra pregunta. Sé que la convención de nomenclatura del espacio de nombres es CompanyName.TechnologyName.Feautre.Design. ¿Cómo obtendría esto correctamente en mi diseño de solución / proyecto? ¿El nombre de la solución = nombre de la empresa, nombre del proyecto = nombre de la tecnología?

Si ese es el caso, significa que no puedo separar mis pruebas de unidad en un nuevo proyecto.


El mejor enfoque es tener un proyecto de prueba de unidad separado por ''proyecto de producción''. Esto asegura que puedes variar y moverlos en pares.

Si tiene un proyecto de prueba de unidad que cubre más de un proyecto de destino, esto crea un acoplamiento hermético artificial entre estos dos proyectos, porque no podrá compilar el proyecto de prueba de unidad sin todos sus proyectos de destino. Esto, de nuevo, hace que sea muy difícil probar un solo proyecto de forma aislada, que es de lo que se trata la prueba unitaria .

Es muy importante mantener las pruebas unitarias en bibliotecas separadas, ya que esto garantiza que solo pruebe la API pública de su código (prueba de caja negra).

Nombro mis espacios de nombres agregando "UnitTest" después del espacio de nombres de destino.


Sí. Cree un proyecto de prueba de unidad para cada proyecto de solución.

Solo habrá un ejecutable único. Las pruebas de las unidades se llevan a cabo en una DLL.

¿Por qué no añadir '' UnitTests '' al espacio de nombres relevante?


Sí. Las pruebas unitarias deben ser un proyecto separado, que compila a su propia DLL.

Esto significa que no está implementando un código de prueba junto con su proyecto, y fomenta un buen diseño (ya que sus pruebas no pueden ver propiedades privadas / internas, naturalmente, tenderá a probar esos bits de su proyecto que interactúan con otros sistemas, en lugar de fijarse en probar cada detalle de su implementación interna)

En términos de nombres, normalmente elegimos un "nombre en clave" para cada proyecto, el actual llamado Zanzibar, y luego terminamos con proyectos como:

MyCompany.Zanzibar.Website (aplicación web ASP.NET MVC)

MyCompany.Zanzibar.Website.Testing (contiene pruebas unitarias para la aplicación web MVC)


Tiendo a tener un proyecto / ensamblaje de prueba específico por ensamblaje. El ensamblaje de prueba tendrá el mismo nombre que el ensamblado que se supone que debe probar, con la adición de .Test en el nombre y el espacio de nombres.

De esa manera, mantiene sus pruebas aisladas y no se implementan con su código de producción.