5

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

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

理想情况下,我想使用或开发一个集成测试框架,以便更容易以可重用的方式为集成测试添加种子数据,以便安排/动作/断言测试的安排方面可以专注于安排我特别需要安排的内容我的测试,而不是考虑安排大量与被测代码间接相关的参考数据。

我碰巧在使用 NHibernate,但我相信任何数据播种功能都应该忽略这一点,并且能够直接操作数据库;ORM 可能会改变,但我将始终使用 SQL 数据库。

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

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

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

4

2 回答 2

2

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

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

当您运行测试时,只需制作此“ TestDbOriginal.sdf”的副本并处理该副本,该副本已经播种了数据。如果你想测试一个特定的场景,你需要通过调用一些方法来准备你的数据,比如 add、remove、edit 。

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

于 2013-03-19T15:01:53.223 回答
1

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

于 2013-03-19T14:51:40.750 回答