2011-09-01 2 views
5

Il consiglio generale è che dovrei sempre testare le mie migrazioni di database, ma come farlo sembra essere un pozzo tenuto segreto;)Come posso testare le migrazioni di FluentMigrator?

mio quadro scelto è FluentMigration.

Quello che penso che voglio fare è:

  1. banca dati Migrazione a N-1.
  2. Salvare alcuni dati.
  3. Migrazione database a N.
  4. Leggere i dati e verificare che non siano persi.
  5. Verificare altre modifiche rilevanti

Ma io non riesco a capire come gestire le migrazioni dal mio test di unità.

+0

Questo è un test di integrazione e non un test di unità. Se si dovesse prendere in giro il database, i test sarebbero piuttosto inutili. Ma questo è solo un piccolo cavillo ;-) La risposta di Richard è ciò di cui hai bisogno. Stai andando a testare anche le migrazioni verso il basso? Sono quelli che di solito contengono bug, come si nota subito se le migrazioni verso l'alto non funzionano. –

+0

Tendo ad usare il termine 'unit test' ogni volta che utilizzo un framework di test unitario. Non sono sicuro di fare questo test di integrazione, anche se si adatta alla definizione; non ha davvero nulla a che fare con l'integrazione. Ma sono d'accordo, questo è un piccolo cavillo. –

+0

Buon punto, btw, per testare le migrazioni verso il basso. –

risposta

2

Per dare il via alla migrazione nei vostri test di integrazione solo sborsare al comando Migrate.exe utilizzando Process.Start

Per esempio

var migrator = System.Diagnostics.Process.Start("migrator.exe", "/connection \"Data Source=db\\db.sqlite;Version=3;\" /db sqlite /target your.migrations.dll"); 
migrator.WaitForExit(); 

Se stai usando MSTest dovrete assicurati che migrator.exe sia incluso come elemento di distribuzione o che tu specifichi un percorso dove si trova .exe quando avvii il processo.

+0

Secondo me, usare gli elementi di distribuzione è una cattiva abitudine. Ma anche se non utilizzo MSTest, devo assicurarmi che l'exe sia copiato nella cartella bin? O specificare il percorso? –

+0

Se si utilizza xUnit o simile, basta includere il percorso completo per il migratore exe –