一般的建议是我应该总是测试我的数据库迁移,但怎么做它似乎是一个保存完好的秘密;)我如何测试我的FluentMigrator迁移?
我选择的框架是FluentMigration。
我觉得我想要做的是:
- 数据库迁移到N-1。
- 保存一些数据。
- 将数据库迁移到N.
- 读取数据并验证它没有丢失。
- 验证等相关变化
但我无法弄清楚如何从我的单元测试运行迁移。
一般的建议是我应该总是测试我的数据库迁移,但怎么做它似乎是一个保存完好的秘密;)我如何测试我的FluentMigrator迁移?
我选择的框架是FluentMigration。
我觉得我想要做的是:
但我无法弄清楚如何从我的单元测试运行迁移。
揭开序幕在集成测试迁移刚掏出来使用的Process.Start
例如
var migrator = System.Diagnostics.Process.Start("migrator.exe", "/connection \"Data Source=db\\db.sqlite;Version=3;\" /db sqlite /target your.migrations.dll");
migrator.WaitForExit();
的migrate.exe命令如果您正在使用MSTest的,你必须确保将migrator.exe作为部署项目包含在内,或者指定启动进程时.exe所在位置的路径。
在我看来,使用部署项目是一个坏习惯。但即使我不使用MSTest,我也必须确保.exe被复制到bin文件夹中?或者指定路径? –
如果您使用xUnit或类似的,只需包含migrator的完整路径exe –
这是一个非常集成的测试,而不是单元测试。如果你想模拟数据库,那么测试将是毫无意义的。但这只是一个小问题;-)理查德的答案就是你需要的。你是否也要测试向下迁移?他们是那些通常包含错误的人,如果注意到迁移不起作用,你会马上注意到它们。 –
我使用单元测试框架时,倾向于使用术语“单元测试”。我不确定我是否会进行集成测试,即使它符合定义;它与集成真的没有关系。但我同意,这是一个小小的狡辩。 –
好点,顺便说一句,测试向下迁移。 –