Come dovrei testare la logica del database dell'unità?


12

Ho ancora un problema a superare un piccolo problema quando si tratta di TDD.

Ho bisogno di un metodo che ottenga un determinato set di record di dati filtrati dal livello dati (linq2SQL). Si noti che sto usando le classi generate da Linq che sono generate dal DBML. Ora il problema è che voglio scrivere un test per questo.

devo:

a) prima inserire i record nel test, quindi eseguire il metodo e testare i risultati

b) utilizzare i dati che potrebbero trovarsi nel database. Non appassionarsi a questa logica perché potrebbe causare la rottura delle cose.

c) cosa mai suggerisci?

Risposte:


7

Variazione su (a).

Avere un db di prova o una sottosezione del db che può essere utilizzata per il test. Quando si impostano i test, disporre di una routine che inizializzi il DB quando necessario per iniziare il test (ciò può essere eseguito prima di ogni test, a seconda dei casi). Ciò può includere la cancellazione di dati, l'inserimento di dati, ecc. Quindi eseguire i test. Nella fase di smontaggio, ripulisci dopo te stesso. Può essere ripetuto quanto è necessario, senza il rischio di interrompere il sistema live (non è una buona idea testare utilizzando i dati nel database necessari per qualsiasi altra cosa).


1
Buona risposta. Mi piace creare database usa e getta usando sqlite. Questo non è possibile se si desidera testare elementi specifici dell'implementazione del database (come i trigger, ad esempio), ma consente un'installazione / smontaggio rapido e innocuo.
bogeymin,

1
@bogeymin - se vuoi, puoi comunque impostare un DB di prova con trigger (puoi creare l'intero db con uno script durante FixtureSetup)
Yaakov Ellis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.