6

¿Cómo se puede realizar la prueba de integración de su base de datos a través de su capa/modelo de dominio (repositorios) que utiliza LINQ 2 SQL en la implementación y deja el DB tal como lo encontró? En otras palabras, el mundo ideal de pruebas unitarias del DB, la prueba de integración dejaría al DB tal como lo encontró.¿Cómo ejecutar Pruebas de integración en DB a través de repositorios con LINQ2SQL?

¿Existen herramientas que puedan manejar esto automágicamente? ¿Cuáles son las mejores prácticas para realizar pruebas de integración en un DB a través de repositorios?

+0

Técnicamente esto sería la prueba de integración;) – womp

+0

@womp: ajustado ... – RSolberg

+0

He estado pensando en esto recientemente. Yo uso LINQ2SQL, pero me gustaría tener una base de datos de "referencia" en XML. Para las pruebas, simplemente cambiaría las cosas autogeneradas de SQL con material generado automáticamente por XML que apunta a mi archivo. Las pruebas pueden "retrotraer" (copiar/probar/mover) fácilmente el archivo XML. Y podría afinar los datos de prueba, lo que sería fácil de controlar. Sin embargo, no estoy seguro de cómo conseguiría LINQ para crear el marco XML correspondiente. Aún no he preguntado sobre la viabilidad o la inteligencia de esto. –

Respuesta

1

The Spring Framework provides support for integration testing when using NUnit. Las clases NUnit se encuentran en el ensamblado Spring.Testing.NUnit.dll. En hay algunos classes that perform transaction management. Estas clases crean y retrotraen una transacción de base de datos para cada prueba. Simplemente escribe código que puede asumir la existencia de una transacción.

Si esto realmente funciona con Linq a SQL es otro asunto. Spring dice que esto funciona con ORMs. SQL Server 2008 le permite anidar transacciones, por lo que en teoría podría iniciar una transacción, realizar su prueba a través de las clases de Linq a SQL y luego retrotraer su transacción. Pero no he
lo intenté.

Ryan Garaguay tiene an interesting article sobre este que utiliza TransactionScope y NUnit para deshacer los cambios de base de datos (aunque él está utilizando SQLCommand y objetos SQLConnection en su código de prueba, en lugar de LINQ)

Cuestiones relacionadas