Domanda

[Modifica (Haren): Duplicate ]

Sto cercando un modo per racchiudere automaticamente i miei test di integrazione NUnit in una transazione DB, in modo che le modifiche apportate dal test vengano automaticamente ripristinate al termine del test. Idealmente, decorerei alcuni metodi di test con un attributo personalizzato che farebbe in modo che NUnit creasse una transazione all'avvio del test e lo ripristinasse al termine del test ... Posso scrivere l'attributo, ma non so dove aggiungere un controllo per questo.

Il DB di prova ha una dimensione di 3 GB, quindi ripristinarlo all'inizio di ogni test non è un'opzione. So di poter creare manualmente una transazione nel corpo di ogni test, ma sto cercando qualcosa di più elegante.

Forse c'è uno strumento di riscrittura di IL (un framework AOP, forse) che può fare questo per me? Qualcuno ha qualche suggerimento?

È stato utile?

Soluzione

Ci sono due consigli. Il primo è utilizzare gli attributi SetUp e TearDown per avviare la transazione e ripristinarla al termine. La documentazione per farlo in NUnit è qui:

http://www.nunit.org/index.php ? p = configurazione & amp; r = 2.4.8

Se non vuoi usarlo, l'altra opzione che vedo è di codificarlo in ogni metodo, ma usa un'istanza TransactionScope in un'istruzione using per creare la transazione (il provider dovrebbe auto-arruolarsi).

Ovviamente, puoi creare l'istanza TransactionScope anche nei metodi SetUp e TearDown.

Altri suggerimenti

Non hai problemi con le transazioni nidificate qui? Da quanto ho capito, molti DB non supportano le transazioni all'interno delle transazioni. Quindi, se il codice in prova utilizza le transazioni (penso che se stai usando un DB che supporta le transazioni, le useresti), allora quello che vuoi davvero sono le transazioni nidificate, che (mi viene detto) la maggior parte I DB non supportano direttamente.

Spring.net?

Vengo da uno sfondo Java / JUnit, ma so che in Java puoi farlo usando Springframework.

(Dovrai anche ottenere il tuo test da ApplicationContext / BeanFactory per applicare AOP ad esso).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top