2011-09-01 16 views
5

El consejo general es que siempre debo probar las migraciones de mi base de datos, pero cómo hacerlo parece ser un secreto bien guardado;)¿Cómo puedo probar la unidad de mis migraciones de FluentMigrator?

Mi marco elegido es FluentMigration.

Lo que yo creo que quiera hacer es:

  1. base de datos Migrar a N-1.
  2. Guarde algunos datos.
  3. Migre la base de datos a N.
  4. Lea los datos y verifique que no se hayan perdido.
  5. Compruebe otros cambios relevantes

pero no puedo encontrar la manera de ejecutar las migraciones de mis pruebas de unidad.

+0

Esto es en gran medida una prueba de integración y no una prueba de unidad. Si se burlaran de la base de datos, entonces las pruebas serían bastante inútiles. Pero eso es solo una pequeña objeción ;-) La respuesta de Richard es lo que necesitas. ¿Vas a probar también las migraciones descendentes? Ellos son los que generalmente contienen errores como notará de inmediato si las migraciones no funcionan. –

+0

Tiendo a usar el término 'prueba unitaria' cada vez que uso un marco de prueba de unidades. No estoy seguro de que esto sea una prueba de integración, incluso si se ajusta a la definición; realmente no tiene nada que ver con la integración. Pero estoy de acuerdo, esta es una pequeña objeción. –

+0

Buen punto, por cierto, para probar las migraciones descendentes. –

Respuesta

2

para dar inicio a la migración en sus pruebas de integración simplemente desembolsar al comando migrate.exe usando Process.Start

Por ejemplo

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

Si está utilizando MSTest que tendrá que asegúrese de que migrator.exe esté incluido como un elemento de implementación o de que especifique una ruta hacia donde vive .exe al iniciar el proceso.

+0

En mi opinión, usar elementos de implementación es un mal hábito. Pero incluso si no utilizo MSTest, ¿debo asegurarme de que el archivo .exe se copie en la carpeta bin? O especifica la ruta? –

+0

Si usa xUnit o similar solo incluya la ruta completa para el exe de migrator –

Cuestiones relacionadas