我最近一直在针对 ASP.Net MVC 控制器操作编写一些集成测试,并且对设置运行测试所需的测试数据的困难感到沮丧。
例如,我想测试控制器的“添加”、“编辑”和“删除”操作。我可以很好地编写“添加”测试,但后来发现要编写“编辑”测试我要么必须调用“添加”测试的代码来创建记录,以便我可以编辑它,或者在测试课上做了很多设置,但都不是特别吸引人。
理想情况下,我想使用或开发一个集成测试框架,以便更容易以可重用的方式为集成测试添加种子数据,以便安排/动作/断言测试的安排方面可以专注于安排我特别需要安排的内容我的测试,而不是考虑安排大量与被测代码间接相关的参考数据。
我碰巧在使用 NHibernate,但我相信任何数据播种功能都应该忽略这一点,并且能够直接操作数据库;ORM 可能会改变,但我将始终使用 SQL 数据库。
我正在使用 NUnit,因此设想挂钩到 test/testfixture setup/teardown(但我认为一个好的解决方案可能会转移到其他测试框架)。
我在我的主要项目中使用FluentMigrator来管理模式和参考数据的播种,因此能够使用 FluentMigrator 框架在整个解决方案中实现一致的方法会很好,但不是必需的。
所以我的问题是,“如何为 C# 中的集成测试播种数据库数据?” 你直接执行SQL吗?你使用框架吗?