2008-12-16 15 views
9

Estoy usando NUnit para probar mi código C# y hasta ahora he mantenido las pruebas unitarias (las de ejecución rápida) y las pruebas de integración (más largas) separadas, y en archivos de proyecto separados. Uso NUnit para hacer las pruebas unitarias y las pruebas de integración. Me acabo de dar cuenta del category attribute que proporciona NUnit, por lo que las pruebas se pueden categorizar. Esto plantea la pregunta, ¿debo mezclarlos y simplemente usar el atributo de categoría para distinguirlos?¿Debo mezclar mis UnitTests y mis pruebas de integración en el mismo proyecto?

Respuesta

0

Me quedaría con cualquier método que estés usando actualmente. Es más una cuestión de opinión, y no querrá tener que volver a utilizar todo su método de prueba.

+0

es solo una "cuestión de opinión" hasta que las pruebas de integración requieran una implementación especial, configuración o desmontaje, entonces se convierte en una "necesidad" ;-) –

+0

Estaba a punto de afirmar que cualquiera de los métodos funciona , pero Steven tiene un punto. Los dos tipos de pruebas pueden tener diferentes requisitos. Y dos asambleas vs una no deberían hacer mucha diferencia ... – Pedro

7

si no es demasiado difícil separarlos, hágalo ahora

unidad de pruebas se deben ejecutar pronto y con frecuencia (por ejemplo, cada vez que cambie algo, antes de la llegada, después del check-in), y debe completar en un corto espacio de tiempo.

pruebas de integración se debe ejecutar periódicamente (todos los días, por ejemplo), pero puede tardar mucho tiempo y recursos para completar

por lo tanto, lo mejor es mantenerlos separados

1

Me parece que el uso de proyectos separados para la prueba de la unidad y las pruebas de integración tienden a crear demasiados artefactos de nivel superior en los proyectos. A pesar de que somos TDD y todo, sigo pensando que el código que se está desarrollando debe merecer al menos la mitad del nivel superior de la estructura de mi proyecto.

1

separarlos si es posible, porque las pruebas de integración normalmente toman mucho más tiempo que UnitTests. Quizás su proyecto crezca y termine con muchas pruebas, todas las cuales toman un corto período de tiempo, excepto las pruebas de integración, y desea ejecutar sus UnitTests con la mayor frecuencia posible ...

0

No lo hago Creo que realmente importa mucho, pero separarlos suena como una mejor idea, ya que el aislamiento y la automatización serán más fáciles. Y la función de categoría es agradable, pero no tan buena desde el punto de vista de la usabilidad.

0

La motivación original detrás de [Category] era resolver el problema que menciona. También se pretendía crear conjuntos de prueba más amplios, pero eso es lo que estás haciendo.

Tenga cuidado con [Categoría]. No todos los corredores de prueba lo soportan de la misma manera que la GUI de NUnit (o lo hizo, no he actualizado en mucho tiempo). En el pasado, algunos corredores ignoraban el atributo si estaba en la misma clase o simplemente lo ignoraban todos juntos. La mayoría parece funcionar ahora.

Cuestiones relacionadas