Quiero escribir pruebas de unidades con NUnit que lleguen a la base de datos. Me gustaría tener la base de datos en un estado constante para cada prueba. Pensé transacciones me permitirían "deshacer" cada prueba así que busqué alrededor y encontró varios artículos 2004-05 sobre el tema:¿Cómo pruebo el código relacionado con la base de datos con NUnit?
- http://weblogs.asp.net/rosherove/archive/2004/07/12/180189.aspx
- http://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx
- http://davidhayden.com/blog/dave/archive/2004/07/12/365.aspx
- http://haacked.com/archive/2005/12/28/11377.aspx
Parecen resolver la implementación de un atributo personalizado para NUnit que desarrolla la capacidad de deshacer operaciones de base de datos después r cada prueba se ejecuta.
Eso es grande, pero ...
- ¿El existe esta funcionalidad en algún lugar de NUnit forma nativa?
- ¿Se ha mejorado esta técnica en los últimos 4 años?
- ¿Sigue siendo esta la mejor manera de probar el código relacionado con la base de datos?
Editar: no es que quiera poner a prueba mi DAL específicamente, es más que quiero probar piezas de mi código que interactúan con la base de datos. Para que estas pruebas sean "sin contacto" y repetibles, sería increíble si pudiera restablecer la base de datos después de cada una.
Además, quiero facilitar esto en un proyecto existente que no tiene lugar de prueba en este momento. Por esa razón, prácticamente no puedo crear una base de datos y datos desde cero para cada prueba.
Después de usar este enfoque durante un par de semanas, estoy muy contento con él, ¡gracias de nuevo! –
Terminé usando un patrón muy similar, pero con una clase base que se ocupa de los trivios de la base de datos, incluida la configuración de las conexiones y otras cosas. –
El único problema es seguramente si no se compromete, no puede probar los datos que se han confirmado en la base de datos. es decir, me gustaría que mi prueba llame al código que llama a la base de datos, luego haga algunas afirmaciones en la base de datos para verificar los datos, pero finalmente restituya todos esos cambios cuando se complete la prueba o conjunto de pruebas. Aunque es un punto válido decir que estas no son realmente pruebas unitarias. Personalmente, me burlo de DAL en general, pero es útil contar con pruebas explícitas de DB que no se ejecutan en una ejecución automatizada. – tjmoore