我该如何对我的FluentMigrator迁移进行单元测试?

5
一般建议是要始终测试数据库迁移,但具体如何实现似乎是个秘密 ;)
我选择的框架是FluentMigration。
我认为我想做的是:
1.将数据库迁移到N-1版。 2.保存一些数据。 3.将数据库迁移到N版。 4.读取数据并验证它没有丢失。 5.验证其他相关更改。
但我无法弄清楚如何从我的单元测试中运行迁移。

这是非常明显的一项集成测试,而不是单元测试。如果你模拟数据库,那么测试就没有什么意义了。但这只是小问题;-) Richard的回答是你需要的。你也会测试向下迁移吗?它们通常包含错误,如果向上迁移不起作用,你会立即注意到。 - Daniel Lee
每当我使用单元测试框架时,我倾向于使用术语“单元测试”。即使符合定义,我不确定这是否为集成测试;它与集成实际上没有任何关系。但是我同意,这只是一个小问题。 - Thomas Eyde
顺便说一句,测试向下迁移是个好主意。 - Thomas Eyde
1个回答

2

为了在集成测试中启动迁移,只需使用Process.Start命令来运行migrate.exe。

例如:

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

如果您正在使用MSTest,则需要确保将migrator.exe包含为部署项,或者在启动进程时指定.exe所在的路径。

在我看来,使用部署项是一个不好的习惯。但即使我不使用MSTest,我也必须确保.exe文件被复制到bin文件夹中?或者指定路径? - Thomas Eyde
如果您使用xUnit或类似工具,请包含迁移器exe的完整路径。 - Richard Banks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接