6

Come procedi con l'integrazione testando il tuo database attraverso il tuo livello/modello di dominio (repository) che usa LINQ 2 SQL nell'implementazione e lascia il DB come l'hai trovato? In altre parole, il mondo ideale di unità test del DB, il test di integrazione lascerebbe il DB come lo ha trovato.Come eseguire il test di integrazione su DB tramite repository con LINQ2SQL?

Ci sono strumenti là fuori che gestiranno questo automagicamente? Quali sono le migliori pratiche per eseguire test di integrazione su un DB attraverso i repository?

+0

Tecnicamente questo sarebbe test di integrazione;) – womp

+0

@womp: corretto ... – RSolberg

+0

Ho pensato a questo recentemente. Io uso LINQ2SQL, ma mi piacerebbe avere un database "di riferimento" in XML. Per testare, vorrei semplicemente passare le cose generate automaticamente da SQL con roba generata automaticamente da XML che punta al mio file. I test possono facilmente "ripristinare" (copiare/testare/spostare) il file XML. E potrei mettere a punto i dati del test, il che sarebbe facile per il controllo della versione. Non so come farei a ottenere LINQ per creare un framework XML corrispondente, però. Non sono ancora andato a chiedere della fattibilità o dell'intelligenza di questo, ancora. –

risposta

1

The Spring Framework provides support for integration testing when using NUnit. Le classi NUnit si trovano nell'assembly Spring.Testing.NUnit.dll. Ci sono alcuni classes that perform transaction management. Queste classi creano e ripristinano una transazione di database per ciascun test. Basta scrivere un codice che possa assumere l'esistenza di una transazione.

Se questo funzionerà effettivamente con Linq su SQL è un'altra questione. Spring dice che funziona con gli ORM. SQL Server 2008 consente di nidificare le transazioni, quindi in teoria è possibile avviare una transazione, eseguire il test tramite le classi da Linq a SQL e quindi eseguire il rollback della transazione con . Ma non ho provato
.

Ryan Garaguay ha an interesting article su questo che utilizza TransactionScope e NUnit per ripristinare le modifiche al database (anche se lui sta usando SQLCommand e oggetti SQLConnection nel suo codice di prova, piuttosto che Linq)

Problemi correlati