如何在C#中为数据库数据进行集成测试?

Tri*_*tan 5 c# asp.net-mvc integration-testing nunit fluent-migrator

我最近一直在针对ASP.Net MVC控制器操作编写一些集成测试,并且由于难以设置为了运行测试而需要存在的测试数据而感到沮丧.

例如,我想测试控制器的"添加","编辑"和"删除"操作.我可以编写"添加"测试,但后来发现编写"编辑"测试我要么必须调用"添加"测试的代码来创建一个记录,以便我可以编辑它,或者在测试类中做了很多设置,这两个设置都没有特别吸引人.

理想情况下,我想使用或开发集成测试框架,以便以可重用的方式为集成测试添加种子数据,以便安排/行为/断言测试的安排方面可以集中精力安排我特别需要安排的内容我的测试而不是关注自己安排一些参考数据,这些参考数据只与测试下的代码间接相关.

我碰巧使用NHibernate,但我相信任何数据播种功能都应该忽略它,并且能够直接操作数据库; ORM可能会改变,但我总是会使用SQL数据库.

我正在使用NUnit,因此设想挂钩测试/ testfixture setup/teardown(但我认为一个好的解决方案可能会转移到其他测试框架).

我在我的主项目中使用FluentMigrator来管理参考数据的模式和种子,因此它很好,但不是必须能够使用FluentMigrator框架在整个解决方案中采用一致的方法.

所以我的问题是,"你如何为C#中的集成测试种下数据库数据?" 你直接执行SQL吗?你使用框架吗?

mat*_*tyB 1

我不知道这是否一定是“正确”的事情,但我总是使用我的添加/创建方法进行播种。