繁体   English   中英

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

[英]How to seed database data for integration testing in C#?

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

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

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

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

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

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

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

您可以在Sql Server Compact上进行集成测试,您将有一个.sdf文件,您可以连接到它,将文件的路径作为连接字符串。 这将更快,更容易设置和使用。

您的集成测试可能不需要数百万行数据。 您可以将测试数据插入数据库并将其另存为TestDbOriginal.sdf

当您运行测试时,只需复制一个' TestDbOriginal.sdf '并处理该副本,该副本已经有数据。 如果要测试特定方案,则需要通过调用添加,删除,编辑等方法来准备数据。

当您进行生产或性能测试时,切换回原始服务器版本,无论是Sql Server 2008还是其他任何版本。

我不知道它是否一定是'正确'的事情,但我总是使用我的add / create方法播种。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM