asp.net-mvc – 用数据测试ASP.NET MVC的单元
我们有一个疯狂的数据驱动的应用程序.我们希望对应用程序进行单元测试,但由于数据量大,开发人员无法构建完全虚假的存储库.我真的不怪他们.
了解我们正在将测试改造为现有应用程序.如果我们重新开始,我们将进行大量的架构更改,以便利用虚假存储库进行更好的单元测试. 我们希望通过测试分发已知的mdf文件,复制它,并使用它来执行我们的测试.是否有批准的技术?我熟悉将资源嵌入到测试dll中,但不熟悉嵌入mdf – 如果可以的话. 一种解决方案(有点): 我最后从Andrew Tokeley的帖子中获取了关于模拟Linq数据上下文的数据(http://andrewtokeley.net/archive/2008/07/06/mocking-linq-to-sql-datacontext.aspx)的DataContextWrapper 我写了一个真正野蛮的T4模板(想想“select * FROM<#= table.BaseClass.QualifiedName#>”)来复制来自已知良好数据库的数据,以创建一个包含以下内容的巨大类: List<Customer> _customers = new List<Customer>(); _customers.Add(new Customer(){CustomerId = 1,CustomerName = "ACME"}); 等等 这个类是25K行,但是因为t4写了所有这些行,谁在乎呢?它允许我们只模拟数据上下文,因此我们可以通过一些合理的保证测试我们的linq与假上下文,我们得到了正确的查询.最初的开发人员在回购中放置了大量的业务逻辑,因此它允许我们针对已知的良好数据测试逻辑. 解决方法
您可以在共享服务器上设置测试数据库,这样就不必部署mdf文件了吗?
此外,您可以使用TransactionScope包装所有单元测试吗? 我在我的公司使用了一个测试数据库,其中包含所有测试的众所周知的参考数据,并为集成测试创建了一个基类: [TestClass] public class ServiceTest { private TransactionScope Transaction { get; set; } [TestInitialize] public virtual void TestInitialize() { Transaction = new TransactionScope(); } [TestCleanup] public virtual void TestCleanup() { Transaction.Dispose(); } } 每个测试都将回滚所有更改,因此测试数据污染数据库没有问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 进程服务应用程序池“经典.NET AppPool”遭受与
- Asp.Net(C#)内联编码Eval if语句
- asp.net-mvc-3 – SelectList不显示所选项目
- asp.net-web-api – 实现ASP.NET WebAPI版本控制的最佳方法
- 传统asp.net小心 async/await坑
- 记一次ASP.NET MVC性能优化(实际项目中)
- asp.net-mvc – Asp.Net MVC如何记录所有被调用的动作
- asp.net-mvc – System.Web.Optimization.Bundle与WebEssen
- asp.net – GridView没有任何属性或属性来生成列
- 浅谈Quartz.Net 从无到有创建实例
- asp.net-mvc-3 – 如何将int数组传递给RouteValu
- asp.net – 跟踪广告链接点击但保持SEO友好链接?
- asp.net-mvc-3 – 如何创建通用的MVC3编辑器模板
- asp.net-mvc – angularjs和mvc5之间通信的最佳方
- asp.net – 如何为多行TextBox设置maxlength?
- asp.net – RequiredFieldValidator要求用户单击
- asp.net – IFrame:此内容无法显示在一个框架中
- asp.net – 如何通过在MasterPage上单击按钮来处
- asp.net – “填充无效,不能删除”异常WebResour
- asp.net web api定义的b/s调用方法一例